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回调需要多长时间?
答案 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");
}