[cxf 2.3.3 vs 2.7.10] Different parameter naming in payload using DynamicClient
dennis.bayer Jan 29, 2015 11:14 AMHello community,
in reference to [http://cxf.547215.n5.nabble.com/cxf-2-3-3-vs-2-7-10-Different-parameter-naming-in-payload-using-DynamicClient-td5753385.…]
---
Hello,
I updated cxf from 2.3.3 to 2.7.10. The jars are bundles with JBoss 6.2. I am using the DynamicClientFactory to create a proxy which invokes the service.
In the old version the name-attribute of the parameter element within the schema was considered. In the newer version it replaces the value of the name attribute with the tag name of the underlying complex type. I could not find any cxf related information (mailing list posts, jira issues, ...) on the internet, but I consider this as a bug. Am I wrong or can this be fixed by myself in any way?
Best regards
Dennis
PS: I am not able to test with a recent cxf bundle, because the service is only callable in a non development environment.
2.3.3
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="https://webservice.domain.eu/Webservice/V1/">
<Value>123</Value>
</AuthHeader>
</soap:Header>
<soap:Body>
<ns2:OperationName xmlns="https://webservice.domain.eu/Webservice/V1/" xmlns:ns2="https://webservice.domain.eu/Webservice/V2/" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/">
<ns2:request>
<ns2:PLZ>12345</ns2:PLZ>
<ns2:Ort>test</ns2:Ort>
<ns2:Strasse>test</ns2:Strasse>
<ns2:Hausnummer>22</ns2:Hausnummer>
<ns2:Datum>2013-04-01+02:00</ns2:Datum>
</ns2:request>
</ns2:OperationName>
</soap:Body>
</soap:Envelope>
2.7.10
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="https://webservice.domain.eu/Webservice/V1/">
<Value>123</Value>
</AuthHeader>
</soap:Header>
<soap:Body>
<ns2:OperationName xmlns="https://webservice.domain.eu/Webservice/V1/" xmlns:ns2="https://webservice.domain.eu/Webservice/V2/" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/">
<ns2:TypeName>
<ns2:PLZ>12345</ns2:PLZ>
<ns2:Ort>test</ns2:Ort>
<ns2:Strasse>test</ns2:Strasse>
<ns2:Hausnummer>2</ns2:Hausnummer>
<ns2:Datum>2012-04-01T12:04:00.000+02:00</ns2:Datum>
</ns2:TypeName>
</ns2:OperationName>
</soap:Body>
</soap:Envelope>
<wsdl:types>
...
<xsd:schema elementFormDefault="qualified" targetNamespace="https://webservice.domain.eu/Webservice/V2/">
<xsd:element name="OperationName">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="request" nillable="true" type="tns:TypeName"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="TypeName">
<xsd:sequence>
<xsd:element name="PLZ" nillable="true" type="xsd:string"/>
<xsd:element name="Ort" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="Strasse" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="Hausnummer" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="Zaehler" type="xsd:int"/>
<xsd:element minOccurs="0" name="Datum" nillable="true" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="TypeName" nillable="true" type="tns:TypeName"/>
...
</xsd:schema>
</wsdl:types>
<wsdl:message name="BusinessCaseService_OperationName_InputMessage">
<wsdl:part name="parameters" element="tns:OperationName"/>
</wsdl:message>
PortType:
<wsdl:operation name="OperationName">
<wsdl:input wsaw:Action="https://webservice.domain.eu/Webservice/V2/BusinessCaseService/OperationName" message="tns:BusinessCaseService_OperationName_InputMessage"/>
<wsdl:output wsaw:Action="https://webservice.domain.eu/Webservice/V2/BusinessCaseService/OperationNameResponse" message="tns:BusinessCaseService_OperationName_OutputMessage"/>
<wsdl:fault wsaw:Action="https://webservice.domain.eu/Webservice/V2/BusinessCaseService/OperationNameServiceFaultFault" name="ServiceFaultFault" message="tns:BusinessCaseService_OperationName_ServiceFaultFault_FaultMessage"/>
</wsdl:operation>
Binding:
<wsdl:operation name="OperationName">
<soap:operation soapAction="https://webservice.domain.eu/Webservice/V2/BusinessCaseService/OperationName" style="document"/>
<wsdl:input>
<soap:header message="tns:BusinessService_OperationName_InputMessage_Headers" part="AuthHeader" use="literal"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceFaultFault">
<soap:fault name="ServiceFaultFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>