October 20, 2010

"XML-24500: (Error) Can not build schema" in JDeveloper 11g

Problem:

We migrated an ESB 10g project to Mediator 11g. What is strange is that this project works completely fine in the 10g world. However, when we try to make or deploy it in JDeveloper 11g, we receive the following error:
Investigation:

Oracle JDeveloper 10g is more liberal in its verification. In fact, our problem was the following.
  • Our JDeveloper 11g composite looks like this:
  • There are 2 external SOAP services, each having its own WSDL. For example:
http://external.ipnweb.org/Location/AddressWebService.svc?wsdl
http://external.ipnweb.org/Contact/ContactWebService.svc?wsdl
  • Observe the schema definition in each of the WSDLs. You will notice that the same namespace is used across both references, but related to different XSDs.
First WSDL
<xsd:schema targetNamespace="http://ns.ipnweb.com/MyApp/AddressWebService/20090101/Imports">
  <xsd:import schemaLocation="http://external.ipnweb.org/Location/AddressWebService.xsd" namespace="http://ns.ipnweb.com/MyApp/Contact/20090101"/>
  <xsd:import schemaLocation="http://external.ipnweb.org/Location/AddressWebService.xsd" namespace="http://ns.ipnweb.com/MyApp/AuditableDomainBase/20090101"/>
</xsd:schema>

Second WSDL
<xsd:schema targetNamespace="http://ns.ipnweb.com/MyApp/ContactWebService/20090101/Imports">
  <xsd:import schemaLocation="http://external.ipnweb.org/Contact/ContactWebService.xsd" namespace="http://ns.ipnweb.com/MyApp/Contact/20090101"/>
  <xsd:import schemaLocation="http://external.ipnweb.org/Contact/ContactWebService.xsd" namespace="http://ns.ipnweb.com/MyApp/Enums/20090101"/>
</xsd:schema>
  • When we open both the XSDs, we can see that the same element is defined identically, but the problem is, the annotations are defined in one of them, but not the other.
First XSD
<xs:complexType name="Organization">
  <xs:complexContent mixed="false">
    <xs:extension base="q1:DomainBase">
      <xs:sequence>
        <xs:element minOccurs="0" name="OrgId" nillable="true" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>

Second XSD
<xs:complexType name="Organization">
  <xs:annotation>
    <xs:appinfo>
      <Surrogate i:type="d1p1:Annotation"/>
    </xs:appinfo>
  </xs:annotation>
  <xs:complexContent mixed="false">
    <xs:extension base="q1:DomainBase">
      <xs:sequence>
        <xs:element minOccurs="0" name="OrgId" nillable="true" type="xs:string">
          <xs:annotation>
            <xs:appinfo>
              <Surrogate i:type="d1p1:Annotation"/>
            </xs:appinfo>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
The fact that the annotations are different is what is causing the XML-24500 error seen above.

Resolution:

Ensure that the XSDs are identical in terms of definition, including annotations.
Buildfile: C:\jdeveloper\bin\ant-sca-compile.xml

scac:
[scac] Validating composite "C:\MyProject\composite.xml"
[scac] oracle.fabric.common.wsdl.XSDException: Global Type declaration/definition of name '{http://ns.ipnweb.com/MyApp/Organization/20090101}Organization' are duplicated at the following locations:
[scac]
[scac] file:/C:/MyProject/ContactWebService.svc_xsd_xsd9.xsd [line#: 6]
[scac] file:/C:/MyProject/AddressWebService.svc_xsd_xsd2.xsd [line#: 6]
[scac] There are at least two of them looking different:
[scac] file:/C:/MyProject/ContactWebService.svc_xsd_xsd9.xsd [difference starting at line#:17]
[scac] file:/C:/MyProject/AddressWebService.svc_xsd_xsd2.xsd [difference starting at line#:17]
[scac]
[scac] Global Type declaration/definition of name '{http://ns.ipnweb.com/MyApp/OrganizationEvent/20090101}OrganizationEvent' are duplicated at the following locations:
[scac]
[scac] file:/C:/MyProject/ContactWebService.svc_xsd_xsd10.xsd [line#: 11]
[scac] file:/C:/MyProject/AddressWebService.svc_xsd_xsd7.xsd [line#: 18]
[scac] There are at least two of them looking different:
[scac] file:/C:/MyProject/ContactWebService.svc_xsd_xsd10.xsd [difference starting at line#:12]
[scac] file:/C:/MyProject/AddressWebService.svc_xsd_xsd7.xsd [difference starting at line#:19]
[scac]
[scac]
[scac] at oracle.fabric.common.wsdl.SchemaBuilder.postProcessXSD(SchemaBuilder.java:330)
[scac] at oracle.fabric.common.wsdl.SchemaBuilder.loadAllSchemas(SchemaBuilder.java:210)
[scac] at oracle.fabric.common.wsdl.SchemaManager.loadAllXSD(SchemaManager.java:139)
[scac] at oracle.fabric.common.wsdl.SchemaManager.buildXDKSchema(SchemaManager.java:348)
[scac] at oracle.fabric.common.wsdl.SchemaManager.lookupSchema(SchemaManager.java:216)
[scac] at oracle.fabric.common.wsdl.SchemaManager.lookupXSDElementDeclaration(SchemaManager.java:399)
[scac] at oracle.soa.scac.WSDLValidator.validateMessageParts(WSDLValidator.java:112)
[scac] at oracle.soa.scac.WSDLValidator.validateMessages(WSDLValidator.java:88)
[scac] at oracle.soa.scac.WSDLValidator.validate(WSDLValidator.java:47)
[scac] at oracle.soa.scac.WSDLValidator.validate(WSDLValidator.java:40)
[scac] at oracle.soa.scac.ValidateComposite.loadWSDLs(ValidateComposite.java:1004)
[scac] at oracle.soa.scac.ValidateComposite.doValidation(ValidateComposite.java:568)
[scac] at oracle.soa.scac.ValidateComposite.run(ValidateComposite.java:156)
[scac] at oracle.soa.scac.ValidateComposite.main(ValidateComposite.java:141)
[scac]
[scac] <Line 2, Column 172>: XML-24500: (Error) Can not build schema 'http://ns.ipnweb.com/MyApp/Organization/20090101' located at 'http://ns.ipnweb.com/MyApp/Organization/20090101.__OAUX_GENXSD_.TOP.XSD'
[scac] <Line 2, Column 168>: XML-24500: (Error) Can not build schema 'http://ns.ipnweb.com/MyApp/DomainBase/20090101' located at 'http://ns.ipnweb.com/MyApp/DomainBase/20090101.__OAUX_GENXSD_.TOP.XSD'
[scac] <Line 3, Column 162>: XML-24500: (Error) Can not build schema 'http://ns.ipnweb.com/MyApp/Contact/20090101' located at 'http://ns.ipnweb.com/MyApp/Contact/20090101.__OAUX_GENXSD_.TOP.XSD'
[scac] <Line 106, Column 164>: XML-24528: (Error) Invalid reference: 'http://ns.ipnweb.com/MyApp/Organization/20090101:Organization'
[scac]
[scac] FATAL_ERROR: location {/ns:composite/ns:import[@location='file:/C:/MyProject/AddressWebService.svc_wsdl_wsdl0.wsdl']}: Load of wsdl "ContactWebService.svc.wsdl with Message part element undefined in wsdl [file:/C:/MyProject/AddressWebService.svc_wsdl_wsdl0.wsdl] part name = parameters type = {http://ns.ipnweb.com/MyApp/AddressWebService/20090101}DeleteAddressBookEntry" failed
[scac] FATAL_ERROR: location {/ns:composite/ns:import[@location='file:/C:/MyProject/ContactWebService.svc_wsdl_wsdl0.wsdl']}: Load of wsdl "ContactWebService.svc.wsdl with Message part element undefined in wsdl [file:/C:/MyProject/ContactWebService.svc_wsdl_wsdl0.wsdl] part name = parameters type = {http://ns.ipnweb.com/MyApp/ContactWebService/20090101}DeleteProfileContactResponse" failed
[scac] FATAL_ERROR: location {/ns:composite/ns:import[@location='file:/C:/MyProject/AddressWebService.svc.wsdl']}: Load of wsdl "ContactWebService.svc.wsdl with Message part element undefined in wsdl [file:/C:/MyProject/AddressWebService.svc_wsdl_wsdl0.wsdl] part name = parameters type = {http://ns.ipnweb.com/MyApp/AddressWebService/20090101}DeleteAddressBookEntry" failed
[scac] FATAL_ERROR: location {/ns:composite/ns:import[@location='file:/C:/MyProject/ContactWebService.svc.wsdl']}: Load of wsdl "ContactWebService.svc.wsdl with Message part element undefined in wsdl [file:/C:/MyProject/ContactWebService.svc_wsdl_wsdl0.wsdl] part name = parameters type = {http://ns.ipnweb.com/MyApp/ContactWebService/20090101}DeleteProfileContactResponse" failed
[scac] FATAL_ERROR: location {/ns:composite/ns:reference[@name='Address']}(17,74): Reference Address does not exist as wire target
[scac] FATAL_ERROR: location {/ns:composite/ns:reference[@name='Contact']}(25,74): Reference Contact does not exist as wire target

BUILD FAILED
C:\jdeveloper\bin\ant-sca-compile.xml:236: Java returned: 1 Check log file : C:\MyProject\SCA-INF\classes\scac.log for errors

Total time: 5 seconds

4 comments:

  1. This is a very helpful blog.. Cheers Ahmed!!

    ReplyDelete
  2. Hi,
    This site is pretty good.I like the way they it was explained.This site had cleared all my issues which i was facing earlier.Many Thanks.

    Oracle R12 Upgrade.

    ReplyDelete
  3. Hi Ahmed.. i need an urgent help.

    i have an esb..

    with one routing service and one soup service

    when i am migrating to 11g.. i am getting in service reference and one reference pointing to 10g wsdl..ok

    when i deployed the same code to 11g it got deployed successfully..

    now i want to point the both routing service and soap service to 11g port..

    i am able to get the routing service wsdl ,can you please let me know where can i find the soup service wsdl pointing to 11g port..

    ReplyDelete
  4. AnonymousJune 21, 2012

    HI Very good info.. Thanks alot for sharing .

    ReplyDelete