Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.1.4
-
None
Description
It happens because CXF by default uses the "parameters" name for both the input and output message parts. The following web method demonstrates the issue:
@WebMethod(operationName = "Hello")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public void hello(
@WebParam(targetNamespace = "myns", name = "Message") String message,
@WebParam(header = true, name = "myOutHeader", targetNamespace = "myns", mode = Mode.OUT) Holder<String> header1) {
}
which produces:
<wsdl:message name="Hello">
<wsdl:part element="tns:Hello" name="parameters">
</wsdl:part>
</wsdl:message>
−
<wsdl:message name="HelloResponse">
<wsdl:part element="tns:HelloResponse" name="parameters">
</wsdl:part>
<wsdl:part element="tns:myOutHeader" name="myOutHeader">
</wsdl:part>
</wsdl:message>
The reference implementation produces the following:
<message name="Hello">
<part name="parameters" element="tns:Hello"/>
</message>
<message name="HelloResponse">
<part name="result" element="tns:HelloResponse"/>
<part name="myOutHeader" element="tns:myOutHeader"/>
</message>
Please see the patch attached that fixes this problem in 2.1.4 and makes CXF generate the same as RI.