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 "Sagara Gunathunga (Commented) (JIRA)" <ji...@apache.org> on 2011/12/21 17:41:30 UTC

[jira] [Commented] (AXIS2-5215) wsdl:fault tag missing for soap bindings in wsdl for In-Only POJO

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