TCP server returns an answer in less than 1 second, so it might not be related to timeout.
What else protocol can I use to be sure that Mina will correctly handle XML response from server? Is there anything like "xmlline" that I can use to let Mina know how to indicate an end of message? Best regards, Suraf Claus Ibsen-2 wrote: > > Hi > > Ah that could be it the TCP server newer returns a response and > camel-mina with timeout after 30 seconds. > And then it continues the routing, so you kinda get the input concatted. > > In this situation camel-mina doesn't properly report that there is an > issue, that the remote server didn't return a response. > It should throw an IOException indicating this error. > > I will create a ticket in JIRA for this. > > Since you are using textline as the protocol the remote TCP server > must send some kind of \n to indicate end of data. > > > > > > /Claus Ibsen > Apache Camel Committer > Blog: http://davsclaus.blogspot.com/ > > > > On Wed, Dec 3, 2008 at 9:56 AM, Suraf wrote: >> >> 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 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 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. >> >> > > -- View this message in context: http://www.nabble.com/camel-mina-in-servicemix---how-to-process-TCP-response--tp20794416s22882p20810015.html Sent from the Camel - Users mailing list archive at Nabble.com.
