Thursday, October 7, 2010

"Error: Load of wsdl X with Message part element undefined in wsdl"

When migrating an ESB 10g project to Mediator 11g, we experienced a rather unique issue. Our WSDLs were hosted outside of the project (this was not the problem), and they referenced our own custom artifacts that were deployed to the ~/AIAComponents folders, which in turn referenced AIA 2.4 specific artifacts.

Problem:
The ESB 10g project migrated successfully through JDeveloper 11g. When trying to 'make' the project, we received the following error:


Error: Load of wsdl "ProcessCustomerPartyTargetProvABCSImpl.wsdl with Message part element undefined in wsdl [file:/C:/SOA11g/Temp/ProcessCustomerPartyTargetProvABCSImpl/ProcessCustomerPartyTargetProvABCSImpl.wsdl] part name = UpdateCustomerParty    type = {http://xmlns.oracle.com/EnterpriseObjects/Core/EBO/CustomerParty/V2}UpdateCustomerPartyEBM" failed

Our project WSDL appeared to be syntactically valid, with no issues with how our operations, messages, or elements were defined. 

Solution:
This was our schema definition in our WSDL:

<types>
 <xsd:schema targetNamespace="http://xmlns.oracle.com/ABCSImpl/GlobalWeb/Core/AddressChange" elementFormDefault="qualified">
   <xsd:import namespace="http://xmlns.oracle.com/EnterpriseObjects/Core/EBO/CustomerParty/V2" schemaLocation="xsd/CustomerPartyEBM.xsd"/>
 </xsd:schema>
</types>

The short answer is to remove the following string from the WSDL file:

targetNamespace="http://xmlns.oracle.com/ABCSImpl/GlobalWeb/Core/AddressChange"

This target namespace is already declared in our <definitions> and it appears that the way 11g handles namespace references differs slightly from that of 10g as it tries to reference the element.



No comments: