Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-1598

Soap message generated via JaxWsProxyFactoryBean created client fails

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • 2.1
    • Invalid
    • JAX-WS Runtime
    • 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>

      Attachments

        1. cxf1598.zip
          7 kB
          Daniel Kulp

        Activity

          People

            dkulp Daniel Kulp
            uwodi Alton Idowu
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: