You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Lori VanGulick (JIRA)" <ji...@apache.org> on 2010/07/01 22:09:50 UTC

[jira] Updated: (AXIS2-4761) Mustunderstand check fails for headers containing response parameters

     [ 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: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org