Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
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
-
None
-
Tuscany Java SCA 1.6
Windows XP SP3
JDK 1.6
-
Patch Available
Description
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)
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.