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 <[EMAIL PROTECTED]> 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 <[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.
>
>

Reply via email to