Hi,
I ran into an interesting interop issue with wsa:Action between CXF
and JAX-WS RI (2.1.4). I have a simple service class, no sei, no
@Action annotations, something like:
@WebService
@Addressing
class Calculator {
public int add(in n1, in2) {
return n1 + n2;
}
}
CXF generated the following wsdl:operation for the "add" method:
<wsdl:operation name="add">
<wsdl:input message="tns:add" name="add"/>
<wsdl:output message="tns:addResponse" name="addResponse"/>
</wsdl:operation>
JAX-WS RI generated the following wsdl:operation for the same method:
<operation name="add">
<input message="tns:add"
wsaw:Action="http://geronimo.apache.org/calculator/Calculator/addRequest"/>
<output message="tns:addResponse"/>
</operation>
Now, the wsa:Action for the CXF generated wsdl:operation would be
"http://geronimo.apache.org/calculator/Calculator/add", and for RI is
"http://geronimo.apache.org/calculator/Calculator/addRequest". Since
the wsa:Action are slightly different that might create an interop
problem. I couldn't really find that much info on this issue in the
JAX-WS spec but I assume if the @Action is not specified the default
algorithm (as defined in the WS-A spec) should be used. The wsa:Action
generated by the RI conforms to that algorithm.
So I think the CXF should either not add the "name" attribute to
wsdl:input/output messages or add in an explicit wsa:Action attribute
as the RI does.
Thoughts?
Jarek