Doug,
StreamSource is used througout ServiceMix for performance reasons, but
the default implementations have one big drawback. The stream can only
be read once, a second attempt will result in the IOException you
mention. Your inbound message is probable of a re-readable Source type
(e.g. a DOMSource), which can explain why using
out.setContent(in.getContent()) solves your problem.
Could you try using a StringSource or BytesSource instead of a
StreamSource when setting the out content? Both Source implementations
extend StreamSource, but are built for ServiceMix to allow
re-readability by recreating the InputStream again every time the
getInputStream() method is called.
Does this solve your issue?
Gert
[EMAIL PROTECTED] wrote:
In my SE, I build an XML to send back to the client. The last two lines
of my SE are:
out.setContent(new StreamSource(new StringReader(new String(inData)));
getChannel().send(exchange);
Where inData is a byte[] containing the content of the incoming
NormalizedMessage from the client. It displays OK.
When I build the project (mvn clean install), the unit test application,
MySpringComponentTest, throws an IO Exception complaining that the
"stream" is closed on this statement:
System.err.println(new
SourceTransformer().toString(me.getOutMessage().getContent()));
If I just set the out content to the in content (i.e.
out.setContent(in.getContent())), then it works. Seems to be a problem
with trying to build an out NormalizedMessage.
Any ideas?
Doug