OC4JのSetMaxinActiveIntervalは正確ではありません
-
13-11-2019 - |
質問
私はoc4jに展開されたサーブレットアプリ。
:を使用して1
Minuteの後にユーザーセッションを無効にしようとしています。
session.setMaxInactiveInterval(1 * 60);
.
しかし何が起こるのは、セッションが破壊される前に1分(そして1分半また半分に達するかもしれません)。
これは実装の問題、または何?
解決
正確に1分後にHTTPリクエストをサーバに送信する代わりに、HttpSessionListener#sessionDestoryed()
が呼び出されるまで待機することで、Destroyをチェックしているようです。
セッション破壊は、間隔で実行されるバックグラウンドジョブによって管理されているほとんどのサーバーにあります。このジョブは、それが期限切れになっているかどうか、または期限切れのものを掃除しているかどうかを確認します。したがって、クライアントが要求を送信していない限り、セッションが期限切れになっているのと同じ2番目のセッションで呼び出されたがであることは事実ではありません。このバックグラウンドジョブは毎秒実行されません。
しかし、セッションがセッションIDを持つ要求を取得しているときはいつでも、セッションがセッションIDで要求を取得しますが、期限切れになっています。
だから、あなたはそれを受け入れるか、あなたのテスト方法論を変更する必要があります。
所属していません StackOverflow