Hi, #1: TCP server expects plain XML so I removed transferExchange=true option. Thanks for that.
#2: My In message from 2nd processor looks like a sum of In message from 1st processor and Out message (which is a processed In message) from 1st processor. So it looks like in below example: Processor I - In message: <AAA><BBB/></AAA> Processor I - Out message (after processing In message): <AAA><BBB><CCC/></BBB></AAA> Processor II - In message: <AAA><BBB/></AAA><AAA><BBB><CCC/></BBB></AAA> Processor II - Out message: null Maybe I'm wrong but it doesn't seem that Out from TCP is In for 2nd processor... I turned on tracing but it doesn't say anything more than java.lang.NullPointerException :( Any suggestions on that, please? Best regards, Suraf Claus Ibsen-2 wrote: > > Hi > > #1 > What format does the TCP server expect? > If it should be the exchange body as plain XML then you should not use > transferExchange=true. > > > #2 > In the last processor could you try getting the IN body instead. > The processor is part of a new route where the OUT from the TCP server > is used as IN in the next node. > > BTW: You can use the tracer to see the messages being passed in the log > http://activemq.apache.org/camel/tracer.html > > > /Claus Ibsen > Apache Camel Committer > Blog: http://davsclaus.blogspot.com/ > > > > On Tue, Dec 2, 2008 at 5:35 PM, Suraf <[EMAIL PROTECTED]> wrote: >> >> All, >> >> I'm trying to execute a few steps using Camel-Mina TCP component in >> servicemix: >> - get InOut message from ServiceMix component >> - process message (processed message is still an XML) >> - send it to TCP server (via Mina) >> - get response from TCP server (response is an XML) >> - process response and send it back to ServiceMix component >> >> Here is my code: >> >> public class TcpRouteBuilder extends RouteBuilder { >> >> public void configure() throws Exception { >> >> String fullAddress = new StringBuilder() >> .append("mina:tcp://") >> .append(serverAddress) >> .append(":") >> .append(serverPort) >> >> .append("?textline=true&sync=true&transferExchange=true").toString(); >> >> >> from("jbi:endpoint:http://namespace/tcpService/tcpEndpoint").process( >> new Processor() { >> public void process(Exchange exchange) throws >> Exception >> { >> String xmlString = convertToString((DOMSource) >> exchange.getIn().getBody()); >> xmlString = prepareMessage(xmlString); >> exchange.getIn().setBody(xmlString); >> } >> } >> ).to(fullAddress).process( >> new Processor() { >> public void process(Exchange exchange) throws >> Exception >> { >> // here some additional processing of response is >> required but body seems to be null >> Object body = exchange.getOut().getBody(); >> body = processBody( body ); >> exchange.getOut().setBody(body); >> } >> } >> ); >> } >> } >> >> In the second processor I get null from exchange.getOut().getBody(). >> >> What am I doing wrong? How should I get valid XML response from TCP and >> process it somehow? >> Could you please advice something? >> >> I'm using FuseESB 3.3.1.11 with Camel 1.5.0 (camel-core-1.5.0.0-fuse.jar >> and >> camel-mina-1.5.0.jar) and Mina 1.1.7 (mina-core-1.1.7.jar). >> >> Thanks in advance for your help. >> >> -- >> View this message in context: >> http://www.nabble.com/camel-mina-in-servicemix---how-to-process-TCP-response--tp20794416s22882p20794416.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> > > -- View this message in context: http://www.nabble.com/camel-mina-in-servicemix---how-to-process-TCP-response--tp20794416s22882p20808827.html Sent from the Camel - Users mailing list archive at Nabble.com.
