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]

Reply via email to