Apache MINA会话关闭回调

时间:2011-07-26 15:53:55

标签: apache-mina

Apache Mina - 2.0.1

我有一个IoHandlerAdapter,它在sessionOpened和sessionClosed上有回调。当我打开一个会话时,我登录到服务器并开始发送请求,在“sessionClosed”中我只是重启我的应用程序。

我的申请会进行检查

if(!session.isClosing()) {
   //write to socket
} else {
   //throw a runtime exception. Hopefully the sessionClosed API gets 
   //called soon and the next time this call will succeed.
}

但是我确实注意到虽然session.isClosing()返回true,但会话实际上永远不会被关闭。即,我真的没有在我的处理程序中收到回电。这可能吗?我该如何减轻这种风险。有人能解释一下调用close回调需要多长时间?

1 个答案:

答案 0 :(得分:0)

恕我直言,你应该像这样使用Close Future:

CloseFuture future = session.close(true);
// wait until its closed, up to 1 minute
future.awaitUninterruptibly(60000L);
if (future.isClosed()) {
    System.out.println("Previous connection close completed");
}