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:
Buildfile: C:\jdeveloper\bin\ant-sca-compile.xmlInvestigation:
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
Oracle JDeveloper 10g is more liberal in its verification. In fact, our problem was the following.
- Our JDeveloper 11g composite looks like this:
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 XSDThe fact that the annotations are different is what is causing the XML-24500 error seen above.
<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>
Resolution:
Ensure that the XSDs are identical in terms of definition, including annotations.
References:
- http://blog.ipnweb.com/2011/08/xml-24500-can-not-build-schema.html
- http://blog.ipnweb.com/2011/02/xml-24500-can-not-build-schema.html
- http://blog.ipnweb.com/2010/10/xml-24500-error-can-not-build-schema-in.html
1 comment:
Wow! Thanks a lot.. i got this problem and it helped me to solve! Thanks!
Post a Comment