[ 
https://issues.apache.org/jira/browse/TUSCANY-3698?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12916464#action_12916464
 ] 

ant elder commented on TUSCANY-3698:
------------------------------------

Padraig, i think the issue is that we don't know what the remote client is so 
we don''t know that the remote client will have the specific exception class 
available in its classpath. If it doesn't and we were to send back a 
com.yourco.SomeApplicationRuntimeException in the ObjectMessage then the remote 
client wont even be able to deserialize it let alone get to the stacktrace. If 
that is the issue then Scotts right we shouldn't be using the 
org.oasisopen.sca.ServiceRuntimeException either and it should be just the 
java.lang.RuntimeException.


> JMS Binding erases the stack trace of RuntimeException's
> --------------------------------------------------------
>
>                 Key: TUSCANY-3698
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-3698
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA JMS Binding Extension
>    Affects Versions: Java-SCA-1.5, Java-SCA-1.5.1, Java-SCA-1.6, 
> Java-SCA-2.0-M1,  Java-SCA-2.0-M2, Java-SCA-2.0-M3, Java-SCA-2.0-M4, 
> Java-SCA-2.0-M5
>         Environment: Tuscany Java SCA 1.6
> Windows XP SP3
> JDK 1.6
>            Reporter: Padraig Myers
>             Fix For: Java-SCA-1.6, Java-SCA-2.0-M5
>
>         Attachments: Patch_TUSCANY-3698
>
>
> In the file 
> org.apache.tuscany.sca.binding.jms.provider.AbstractMessageProcessor there is 
> a method createFaultMessage(), this method creates a JMS fault message from 
> an exception that is passed into the method.
> However if the messages is a RuntimeException a new exception is created, 
> thereby losing the stack trace from the original exception.
> The offending piece of code is 
>             ObjectMessage message = session.createObjectMessage();
>             String causeMsg;
>             if (o instanceof RuntimeException) {
>                 message.setObject(new 
> ServiceRuntimeException(o.getMessage()));
>             } else {
>                 // for a checked exception return the checked exception
>                 message.setObject(o);
>             }
>             message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, 
> true);
>             return message;
> there is no reason that RuntimeException's should be treated any differently 
> and therefore the code above can be replaced with
>             ObjectMessage message = session.createObjectMessage();
>             message.setObject(o);
>             message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, 
> true);
>             return message;
> This means that the component that gets this JMS message will be able to log 
> the true source of the exception and not lose all the stack trace information.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to