Hi,
I'm new to Apache Camel and Mina. I'm writing a simple tcp sever and i'm
facing a problem : i don't know how to close a Mina Endpoint Session. I use
Camel 1.5.0 (available at maven official repository)
The workflow is : the client send a "Logout" command, then the server says
"Bye" and the _server_ close the connection. It's like and FTP server does.
my route is this way configured :
<route>
<from ref="myMinaEndpoint" />
<to uri="myProcessor" />
</route>
The minaEndPoint URL is
mina:tcp://localhost:1802?textline=false&sync=true&minaLogger=false&codec=myCodec
In my processor, i do in the process(Exchange exchange) method :
MinaExchange minaExchange = (MinaExchange) exchange;
// ...
minaExchange.getOut().setBody(myResponse);
and the classic request-response works well
but if i add at the end if the case of a logout request
minaExchange.getSession().close();
the tcp session is closed, but the response ("Bye") is not sent. I got an
exception on server side :
230583 [AnonymousIoService-11] WARN
org.apache.camel.component.mina.MinaConsumer$ReceiveHandler - [/
192.168.244.87:54868] Unexpected exception from exceptionCaught handler.
org.apache.camel.CamelException: org.apache.camel.CamelExchangeException:
Could not write body on the exchange: Exchange[Message:
com.dclgroup.eurodns.epp.server.eppdatag...@109dc35]
at
org.apache.camel.component.mina.MinaConsumer$ReceiveHandler.exceptionCaught(MinaConsumer.java:88)
at
org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.exceptionCaught(AbstractIoFilterChain.java:564)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextExceptionCaught(AbstractIoFilterChain.java:345)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.exceptionCaught(AbstractIoFilterChain.java:643)
at
org.apache.mina.common.IoFilterAdapter.exceptionCaught(IoFilterAdapter.java:75)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextExceptionCaught(AbstractIoFilterChain.java:345)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$1000(AbstractIoFilterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.exceptionCaught(AbstractIoFilterChain.java:643)
at
org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:224)
at
org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.camel.CamelExchangeException: Could not write body on
the exchange: Exchange[Message:
com.dclgroup.eurodns.epp.server.eppdatag...@109dc35]
at
org.apache.camel.component.mina.MinaHelper.writeBody(MinaHelper.java:47)
at
org.apache.camel.component.mina.MinaConsumer$ReceiveHandler.messageReceived(MinaConsumer.java:131)
at
org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at
org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
at
org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
... 5 more
Any help would be much appreciated.
Best regards,
Nicolas.