1

アパッチ ミナ - 2.0.1

sessionOpened と sessionClosed でコールバックする IoHandlerAdapter があります。セッションを開くと、サーバーにログインしてリクエストの送信を開始し、「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 コールバックが呼び出されるまでにかかる時間を誰か説明できますか?

4

2 に答える 2

0

私見では、このシナリオには次のようにCloseFutureを使用する必要があります。

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");
}
于 2011-11-15T21:25:34.957 に答える