Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Cannot Reproduce
-
2.1
-
None
-
Windows XP, Ubuntu 7.04, jdk 1.5.0_09, CXF 2.1
Description
The soap messages generated through DynamicClientFactory and JaxWsProxyFactoryBean are different. The message generated via the DynamicClientFactory created client generates a soap message with qualified parameters that is accepted by web service provider. However, the message JaxWsProxyFactoryBean created client generates a soap message with unqualified parameters that is rejected by the web service provider. Is there a parameter or custom interceptor code that I can use to force the JaxWsProxyFactoryBean created client to qualify the parameters? Unfortunately, changing the web service provider is not an option as their change management process is very arduous.
Soap message generated via the DynamicClientFactory client:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:executeQuery xmlns:ns1="urn:test.ilss.sup">
<in0 xmlns="urn:test.ilss.sup">
TEST DATA
</in0>
</ns1:executeQuery>
</soap:Body>
</soap:Envelope>
Soap message generated via the JaxWsProxyFactoryBean client:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:executeQuery xmlns:ns2="urn:test.ilss.sup">
<in0>
TEST DATA
</in0>
</ns2:executeQuery>
</soap:Body>
</soap:Envelope>
The web service provider sends the following message for the JaxWsProxyFactoryBean client:
<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>Server</faultcode>
<faultstring>Parameter in0 does not exist!</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:test.ilss.sup" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:test.ilss.sup">
<wsdl:types>
<xsd:schema targetNamespace="urn:test.ilss.sup" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:element name="executeQuery">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in0" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="executeQueryResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="executeQueryResponse">
<wsdl:part element="tns:executeQueryResponse" name="parameters" />
</wsdl:message>
<wsdl:message name="executeQueryRequest">
<wsdl:part element="tns:executeQuery" name="parameters" />
</wsdl:message>
<wsdl:portType name="servicePortType">
<wsdl:operation name="executeQuery">
<wsdl:input message="tns:executeQueryRequest" name="executeQueryRequest" />
<wsdl:output message="tns:executeQueryResponse" name="executeQueryResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="serviceHttpBinding" type="tns:servicePortType">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="executeQuery">
<wsdlsoap:operation soapAction="" />
<wsdl:input name="executeQueryRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
<wsdl:output name="executeQueryResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="service">
<wsdl:port binding="tns:serviceHttpBinding" name="serviceHttpPort">
<wsdlsoap:address location="http://****/vip/queryservice.ws" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>