October 14, 2010

"oracle.fabric.common.wsdl.XSDException: Error loading schema" when deploying Mediator 11g project

Problem:
  • We have a project called "CreateAddressReqABCSImpl"
  • This project is based off of a remote WSDL (i.e., the WSDL is not hosted in the project itself)
  • The remote WSDL is located on our namespace server. For example:

  • This WSDL imports the following XSD:
http://namespaceserver/AIAComponents/EnterpriseObjectLibrary/Core/Custom/EBO/CustomerParty/V2/CustomCustomerPartyEBM.xsd
When we try to make or deploy this project, we received the following error:
[scac] Validating composite "C:\SOA11g\Temporary\CreateAddressReqABCSImpl\composite.xml"
[scac] oracle.fabric.common.wsdl.XSDException: Error loading schema from http://namespaceserver/AIAComponents/ApplicationObjectLibrary/MyApp/Address/CreateAddressReqABCSImpl.wsdl [Cause=Start of root element expected.]
[scac]     at oracle.fabric.common.wsdl.SchemaBuilder.loadEmbeddedSchemas(SchemaBuilder.java:496)
[scac]     at oracle.fabric.common.wsdl.SchemaBuilder.loadSchemasFromWSDL(SchemaBuilder.java:365)
[scac]     at oracle.fabric.common.wsdl.SchemaBuilder.loadAllSchemas(SchemaBuilder.java:202)
[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] Caused by: oracle.xml.parser.v2.XMLParseException: Start of root element expected.
[scac]     at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:323)
[scac]     at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:380)
[scac]     at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:321)
[scac]     at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:226)
[scac]     at oracle.fabric.common.wsdl.SchemaBuilder.parseXMLSrc(SchemaBuilder.java:967)
[scac]     at oracle.fabric.common.wsdl.SchemaBuilder.parseXSDSrc(SchemaBuilder.java:919)
[scac]     at oracle.fabric.common.wsdl.SchemaBuilder.processSchemaImportsAndInclude(SchemaBuilder.java:769)
[scac]     at oracle.fabric.common.wsdl.SchemaBuilder.loadEmbeddedSchemas(SchemaBuilder.java:492)
[scac]     ... 14 more
[scac] FATAL_ERROR: location {/ns:composite/ns:import[@location='http://soa11gserver:8001/soa-infra/services/EBS/CustomerPartyEBS/CustomerPartyEBS_ep?WSDL']}(7,32):
Load of wsdl "http://soa11gserver:8001/soa-infra/services/EBS/CustomerPartyEBS/CustomerPartyEBS_ep?WSDL with Message part element undefined in wsdl
[http://soa11gserver:8001/soa-infra/services/EBS/CustomerPartyEBS/CustomerPartyEBS_ep?WSDL]
part name = QueryCustomerPartyGrantorPrivilegeListResponseEBM
type = {http://xmlns.oracle.com/EnterpriseObjects/Core/EBO/CustomerParty/V2}QueryCustomerPartyGrantorPrivilegeListResponseEBM" failed
[scac] FATAL_ERROR: location {/ns:composite/ns:import[@location='http://namespaceserver/AIAComponents/ApplicationObjectLibrary/MyApp/Address/CreateAddressReqABCSImpl.wsdl']}(4,245):
Load of wsdl "http://soa11gserver:8001/soa-infra/services/EBS/CustomerPartyEBS/CustomerPartyEBS_ep?WSDL
with Message part element undefined in wsdl [http://namespaceserver/AIAComponents/ApplicationObjectLibrary/MyApp/Address/CreateAddressReqABCSImpl.wsdl]
part name = parameters
type = {http://ns.ipnweb.com/MyApp/AddressService/20090101}CreateAddressBookEntryResponse" failed
[scac] WARNING: location {/ns:composite/ns:reference[@name='CustomerPartyEBS']}(15,158):
Failed to Find Binding "CustomerPartyEBS":"{http://xmlns.oracle.com/EnterpriseServices/Core/CustomerParty/V2}CustomerPartyEBS_pt" in WSDL Manager
[scac] WARNING: in CreateAddressReqABCSImpl.mplan: Case "CustomerPartyEBS.CreateCustomerParty" doesnt have any payload transformation Please make
sure source and target message part name are same and of same type. Otherwise, target reference may fail to execute with error message like
"Input sourcelike Null" or "Part not found"
[scac] WARNING: in CreateAddressReqABCSImpl.mplan: Case "CustomerPartyEBS.CreateCustomerPartySync_2" doesnt have any payload transformation
Please make sure source and target message part name are same and of same type.
Otherwise, target reference may fail to execute with error message like
"Input sourcelike Null" or "Part not found"

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

Total time: 3 seconds
Investigation:

What's strange is that when I open the following XSD in the browser:

http://namespaceserver/AIAComponents/EnterpriseObjectLibrary/Core/Custom/EBO/CustomerParty/V2/CustomCustomerPartyEBM.xsd
It looked kind of strange:
It should look something like this:
So it appears that the browser is not able to recognize the file as a valid XML document.

Resolution:

Even though the XSD above was a syntactically valid XML document, for some reason, it is not being recognized as such.
1. Edit the XSD using a text editor such as TextPad or Notepad++.

2. Add a space anywhere in the document. Then delete the space.

3. If using TextPad, just save the file.

If using NotePad++, choose 'Encoding --> Encode in UTF-8 without BOM',
then save the file.
4. The XSD will now be recognized as a valid XML file.
The reason is due to the UTF-8 byte order mark (BOM). For more information on this, check out http://en.wikipedia.org/wiki/UTF-8
http://namespaceserver/AIAComponents/ApplicationObjectLibrary/MyApp/Address/CreateAddressReqABCSImpl.wsdl

3 comments: