[ 
https://issues.apache.org/jira/browse/AXIS2-4761?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lori VanGulick updated AXIS2-4761:
----------------------------------

    Attachment: AXIS2-4761patch.txt

Attached patch with fix for this issue

> 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
>         Attachments: AXIS2-4761patch.txt
>
>
> 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