[ https://issues.apache.org/activemq/browse/SM-553?page=comments#action_37385 ] Guillaume Nodet commented on SM-553: ------------------------------------
If you look at the latest code, this has been fixed: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/MessageExchangeImpl.java?r1=434130&r2=434178&diff_format=h > MessageExchangeImpl.toString() converts message content to DOMSource > -------------------------------------------------------------------- > > Key: SM-553 > URL: https://issues.apache.org/activemq/browse/SM-553 > Project: ServiceMix > Issue Type: Bug > Components: servicemix-core > Affects Versions: 3.0-M2 > Reporter: Robert H. Pollack > Assigned To: Guillaume Nodet > Fix For: 3.0 > > Attachments: patches.zip > > > The toString() method of MessageExchangeImpl, in an attempt to show the in, > out, and fault messages of the exchange, converts their content to DOM. If > this conversion succeeds, the user may be surprised, because the message has > changed from a stream source to a DOM source; this originally caused some > ClassCastExceptions in our code. > If the conversion fails, the situation is even worse. Now the message > content remains a stream source, but the stream has been consumed in the > attempted conversion, so the message is now empty. > The reason that this toString method is getting called, almost no matter what > you do, is that ServiceMix is distributed with log levels set to DEBUG > (oddly, you don't see any debug messages, probably because the log4j.xml file > does not specify an appender for these messages). This setting causes many > invocations of the form > log.debug ("Now I'm doing something to " + myMessageExchange); > which causes the toString method to be invoked whether or not anything is > actually printed. > This toString method also turns out to have another problem. If it does get > an exception, it returns null. It turns out that an object's toString method > should never do this, because it can cause NullPointerExceptions if the > object is printed. > I've created an alternate version of MessageExchangeImpl which corrects these > problems. To use it, unzip the enclosed file into your SERVICEMIX_HOME > directory and run ant in the directory it creates. This will create a new > class and insert it into a place that will cause ServiceMix 3.0 to use it in > preference to the original. Be sure that you unzip this file into the right > place, though, because the ant script contains specific references to "..". > A bit more detail is in the comments in the enclosed code. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
