JMS Binding erases the stack trach of runtime exceptions
--------------------------------------------------------
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-2.0-M5, Java-SCA-2.0-M4, Java-SCA-2.0-M3,
Java-SCA-2.0-M2, Java-SCA-2.0-M1, Java-SCA-1.6, Java-SCA-1.5.1, Java-SCA-1.5
Environment: Tuscany Java SCA 1.6
Windows XP SP3
JDK 1.6
Reporter: Padraig Myers
Fix For: Java-SCA-2.0-M5, Java-SCA-1.6
In the file
org.apache.tuscany.sca.binding.jms.provider.AbstractMessageProcessor there is a
method createFaultMessage(), this method creates a JSM fault message from an
exception.
However if the messages is a runtime exception 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.