[ 
https://issues.apache.org/jira/browse/AXIS2-5215?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13174192#comment-13174192
 ] 

Sagara Gunathunga  commented on AXIS2-5215:
-------------------------------------------

This seems an issue with Axis2 default behavior of Java to WSDL transmission 
primitive mapping not with message Receivers.

First use of RPCInOnlyMessageReceiver (4) here is incorrect, AFAIK 
RPCInOnlyMessageReceiver not designed to handle responses properly hence 
RPCMessageReceiver is the correct option.  By default Axis2 found correct 
MessageReceiver for the given (1) (2) scenario.   

Expected behavior of given method is no response message if the processing is 
successful and fault message if an exception occur, WSDL 2. 0 robust-in-only 
MEP [1] clearly define this behaver. If you check WSDL 2.0  for same service 
you can see correct WSDL generated and possible to generate correct client side 
codes using a WSDL 2.0 processing tool ( e.g - Axis2 WSDL2JAVA with -wv 2.0 
option).

Unfortunately it is not possible to describe above behavior using WSDL 1.1 , it 
defines 4 transport primitives [2] but non of them can describe above behavior 
well. Among these either one-way or request-response have to use with above 
Java method, currently Axis2 use one-way operation but run time behavior  is 
not complaint with  one-way pattern ( i.e - According to WS BP[3] it is 
incorrect to send any SOAP response neither empty SOAP envelope nor SOAP 
fault). Then only valid option is map above Java method as a request-response 
operation so that it will send empty message when success and fault message 
when exception occurs.

Until this get resolved it is possible to define explicitly RPCMessageReceiver 
in your services.xml file.  


[1] - http://www.w3.org/TR/wsdl20-adjuncts/#robust-in-only
[2] - http://www.w3.org/TR/wsdl#A4.1
[3] - 
http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html#One-Way_Operations
                
> wsdl:fault tag missing for soap bindings in wsdl for In-Only POJO
> -----------------------------------------------------------------
>
>                 Key: AXIS2-5215
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5215
>             Project: Axis2
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.6.1, 1.7.0
>         Environment: Tomcat 6, JDK 1.6.0_26
>            Reporter: Vilnis Termanis
>              Labels: exception-handling, in-only, pojo
>
> Procedure:
> 1) Create POJO service with non-returning function which throws an exception, 
> e.g.:
> public class ExampleService { public void testFunction(String something) 
> throws Exception { throw new Exception("testing123"); }}
> Include RPCInOnlyMessageReceiver & RPCMessageReceiver in <messageReceivers> 
> tag (services.xml)
> 2) Check runtime-generated wsdl (e.g. ../axis2/services/ExampleService?wsdl)
> 3) Call testFunction() from client (e.g. PHP's SoapClient) via soap binding
> 4) Explicitly define testFunction() as "InOnly" in services.xml:
>  <operation name="testFunction"><messageReceiver 
> class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /></operation>
> 5) Repeat steps 2 & 3
> Result:
> 2) <wsdl:fault> tag missing for both Soap (1.1 & 1.2) bindings (only appears 
> for http)
> 3) Since wsdl doesn't contain fault tag for soap bindings, soap clients 
> ignore the exception
> 5) <wsdl:fault> now appears for all bindings, as expected

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to