[ https://issues.apache.org/jira/browse/TUSCANY-3698?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Padraig Myers updated TUSCANY-3698: ----------------------------------- Attachment: 3698.padraig.ver2.patch Sorry of course printStackTrace() wont work, sorry its late in the afternoon here! Uploaded a 2nd version of the patch incorporating your changes as well as mine. I've tested it and it work fine. Does it look OK? > 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: 3698.padraig.ver2.patch, 3698.skurz.patch, > 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.