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 "Jarek Kucypera (JIRA)" <ji...@apache.org> on 2007/06/07 00:24:25 UTC

[jira] Commented: (AXIS2-1754) Exceptions thrown by service methods are not propogated to clients properly.

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

Jarek Kucypera commented on AXIS2-1754:
---------------------------------------

Well, I did a small patch in RPCMessageReceiver tha works fine for my pojo services:  if the InvocationTargetExceptions target exceptions's class is found to be declared by the service method being called, I use bean serializer to fill AxisFault.detail. Otherwise it is proceeded as before, resulting in general ('meaningless') fault sent to the client.

> Exceptions thrown by service methods are not propogated to clients properly.
> ----------------------------------------------------------------------------
>
>                 Key: AXIS2-1754
>                 URL: https://issues.apache.org/jira/browse/AXIS2-1754
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: rpc
>    Affects Versions: 1.1
>         Environment: OS: Windows XP SP2, Eclipse 3.2 IDE, Java 5.0 Update 7
>            Reporter: Aaron Gourley
>            Assignee: Afkham Azeez
>
> This bug was introduced in revision 452427 (http://svn.apache.org/viewvc?view=rev&revision=452427)
> In the invokeBusinessLogic() method, calls to "AxisFault.makeFault(e)" were changed to calls to "new AxisFault(msg, e)" in the catch blocks in the try/catch statements.  This is particularly a problem in the handling of InvocationTargetExceptions, because the call was actually replaced with a call to "new AxisFault(msg) and exceptions thrown by service methods (which are wrapped by InvocationTargetExceptions at this point) are discarded.  The old behaviour was to wrap the cause exception in an AxisFault and rethrow.  Now the cause exception is only used for its message and a new AxisFault exception is created with the same message (and no reference to the exception thrown by the service method).
> This results in a meaningless exception being thrown every time.
> Example:
> My service object throws an exception object (which is defined in my WSDL) containing some member fields: messageId and resultCode.  I do not call setMessage() on this exception, so getMessage() returns null.  After the RPCMessageReceivers process my exception, an AxisFault is thrown with message "Exception occurred while trying to invoke service method " + method.getName().  My original exception is thrown away and I lose my messageId and resultCode information.  I get the following SOAP message from the server:
> HTTP/1.1 500 Internal Server Error
> Server: Apache-Coyote/1.1
> Set-Cookie: JSESSIONID=07DA197EBF0B871BF5F99B82A177EE01; Path=/TerminalLocationService
> Content-Type: text/xml;charset=UTF-8
> Transfer-Encoding: chunked
> Date: Mon, 20 Nov 2006 20:05:48 GMT
> Connection: close
> 169
> <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header /><soapenv:Body><soapenv:Fault><faultcode>soapenv:Client</faultcode><faultstring>Exception occurred while trying to invoke service method getLocationForGroup</faultstring><detail /></soapenv:Fault></soapenv:Body></soapenv:Envelope>
> 0

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