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

Jarek Kucypera updated AXIS2-1754:
----------------------------------

    Attachment: ReceiverUtils.java

Davanum Srinivas asked me to upload my patch for serializing request, but he 
patch is unusable without some other minor chanes I have done for my needs, so 
here is just the core of the patch, hope it will be helpfull.
The ReceiverUtils.processCheckedException should be called from 
RPCMessageReceiver's >catch (InvocationTargetException e)< clause. The very 
serialization in ReceiverUtils.processFault  does not wrap the exception in 
<...Fault> element, but I left the wrapping code in comments. 


> 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
>            Priority: Blocker
>         Attachments: ReceiverUtils.java
>
>
> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to