[ https://issues.apache.org/jira/browse/ODE-379?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthieu Riou updated ODE-379: ------------------------------ Fix Version/s: (was: 1.3) 2.0 > Problem handling external WSDLs with multiple namespaces > -------------------------------------------------------- > > Key: ODE-379 > URL: https://issues.apache.org/jira/browse/ODE-379 > Project: ODE > Issue Type: Bug > Components: Axis2 Integration > Affects Versions: 1.2 > Reporter: Jon Coogan > Fix For: 2.0 > > > I think I've discovered a bug in the way Ode 1.2 handles external WSDLs that > contain multiple namespaces. For example, I have a web service that has the > following format: > <?xml version="1.0" encoding="UTF-8"?> > <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" > xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xyzNamespace="xyz" > name="SampleService" targetNamespace="abc"> > <plnk:partnerLinkType name="SamplePartnerLinkType"> > <plnk:role name="SampleRole" portType="xyzNamespace:SamplePortType"/> > </plnk:partnerLinkType> > <import location="xyz.wsdl" namespace="xyz"/> > <service name="SampleService"> > <port binding="xyzNamespace:SamplePortBinding" name="SamplePort"> > <soap:address location="http://xxxxxx/Sample"/> > </port> > </service> > </definitions> > The target namespace of the WSDL is "abc", but the service > binding/operations/faults/etc are actually declared in the "xyz" namespace. > As far as I can tell, this is perfectly legal. > The problem is that I can't get fault handling to work at all with a service > like this. The WSDL defines a fault in the xyz namespace. When I encounter > the fault, I see this in the Ode log: > WARN [SoapExternalService]: Fault response: faultType={abc}SampleFault > What's puzzling about this is that the namespace is wrong. The SampleFault > is declared in the xyz namespace, not the abc namespace. I surmised that Ode > somehow assumes that the faults (and possibly other things) reside in the > same namespace as the top-level WSDL. > I did some snooping and found some code that seems to confirm this. See > parseSoapFault() in: > http://svn.apache.org/repos/asf/ode/tags/APACHE_ODE_1.2/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java. > The last line jumped out at me: > return new QName(_def.getTargetNamespace(), fdef.getName()); > Now I am not very familiar with the Ode sources, but it looks the namespace > is being pulled off the top-level definition. In this case, that is > incorrect because the fault actually has a different namespace. > I wonder if there are other areas where the same kinds of assumptions are > made. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.