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

Reply via email to