[ 
https://issues.apache.org/activemq/browse/SM-553?page=comments#action_36834 ] 
            
Guillaume Nodet commented on SM-553:
------------------------------------

Author: gnodet
Date: Wed Aug 23 12:26:29 2006
New Revision: 434130

URL: http://svn.apache.org/viewvc?rev=434130&view=rev
Log:
SM-553: add a system property to preserve jbi message content when calling 
toString() and avoid returning null when an exception is thrown



> 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
>         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

        

Reply via email to