Mustunderstand check fails for headers containing response parameters
---------------------------------------------------------------------
Key: AXIS2-4761
URL: https://issues.apache.org/jira/browse/AXIS2-4761
Project: Axis2
Issue Type: Bug
Components: jaxws
Reporter: Lori VanGulick
The JAX-WS runtime may report the following error condition
for SOAP headers on the response message that contain defined
output parameters:
.
javax.xml.ws.WebServiceException: org.apache.axis2.AxisFault:
Must Understand check failed for header http://someNamespaceURI
: SomeHeaderName
at
org.apache.axis2.jaxws.ExceptionFactory.createWebServiceExceptio
n(ExceptionFactory.java:175)
at
org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(
ExceptionFactory.java:70)
at
.....
Caused by: org.apache.axis2.AxisFault: Must Understand check
failed for header http://someNamespaceURI : SomeHeaderName
at
org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngin
e.java:114)
at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:178)
at
org.apache.axis2.description.OutInAxisOperationClient.handleResp
onse(OutInAxisOperation.java:363)
at
.....
Output parameters may be defined to be in SOAP headers either
in the WSDL or by JAX-WS annotations.
Here is an example of a WSDL binding which defines output
parameter on a SOAP header:
<output>
<soap:header message="tns:MyResponse"
part="MyResponseHeader" use="literal"/>
<soap:body parts="MyResponse" use="literal"/>
</output>
Here is an example of a JAX-WS annotation which defines an
output parameter on a SOAP header:
@WebMethod
public String echoString(
@WebParam(mode=WebParam.Mode.OUT, header=true)
Holder<String> MyResponseHeader)
According to the JAX-WS spec, because these headers are defined for the
operation, they should be automatically understood by the runtime...
10.2.1 SOAP mustUnderstand Processing ....
3. Identify the set of header qualified names (QNames) that the binding
instance understands. This is
the set of all header QNames that satisfy at least one of the following
conditions:
(a) that are mapped to method parameters in the service endpoint
interface;
Currently the code only checks for IN or INOUT parameters.
I have created a patch to fix the problem. During OperationDescription
creation I have added code to check for output and return parameters that are
in headers and add them to the understoodQNames ArrayList. This is the list
that is later referenced during mustunderstand checking. I have also modified
a unittest to verify that output and return type headers are correctly added to
the ArrayList.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]