TCP server returns plain XML message and it is working for sure (if I'm using some other TCP component it is working fine and gets message from server).
Probably the problem is in connection definition. I found sth like that in log: DEBUG - MinaProducer - Waiting for response DEBUG - MinaProducer - Session closed but no message received from address: /123.123.123.123:12345 Best regards, Suraf Claus Ibsen-2 wrote: > > On Wed, Dec 3, 2008 at 9:37 AM, Suraf <[EMAIL PROTECTED]> wrote: >> >> 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... > What is the OUT from the TCP? Maybe you can invoke the TCP directly > and see what it actually returns. > > You could also try with a mock of the TCP server to return a fixed > response so you know what the OUT is and thus better can find out what > is wrong. > > > >> >> >> >> I turned on tracing but it doesn't say anything more than >> java.lang.NullPointerException :( > Ah that could be the bug in Camel if a body is null. You need to turn > showBodyType=false to avoid this NPE: > http://activemq.apache.org/camel/tracer.html > > > >> >> 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. >> >> > > -- View this message in context: http://www.nabble.com/camel-mina-in-servicemix---how-to-process-TCP-response--tp20794416s22882p20809061.html Sent from the Camel - Users mailing list archive at Nabble.com.
