[ 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]