HTTP セッションを使用してユーザーの状態を追跡する Web アプリケーションがあります。セッションタイムアウトを 2 分に設定する必要があるエラーをデバッグしようとしています。web.xml -> session-timeoutを 2に変更しました。カスタム HTTP セッション リスナーにログ ステートメントを追加することで、アプリケーションにログインしていない 2 分後にセッションが作成され、破棄されることがわかりました。ログイン後、セッションが作成されてから約 20 分間、セッションが破棄されます。また、セッションの存続時間を延長する AJAX 呼び出しを避けるためにブラウザーを閉じようとしましたが、それでも同じ動作が見られます。アプリケーション内の別の何かがセッションの存続時間を延長しているように見えますが、その理由は何でしょうか? これを修正するためにどこから探し始めますか?
3 に答える
0
ログイン サーブレット、ターゲット JSP、またはセッション リスナーが、web.xml で設定されたセッション タイムアウト値をプログラムによって上書きしていないことを確認します。コード ベース内でsetMaxInactiveIntervalを検索します。
session.setMaxInactiveInterval(20*60); // seconds
于 2013-07-01T22:15:56.833 に答える
0
20 分が正確な見積もりではない場合: または を使用してセッションを取得しています request.getSession();
か request.getSession(true);
? もしそうなら、それが理由かもしれません。
また、それを回避する request.getSession(false);
ことで、セッションの存続時間の延長を止めることができます。
「約 20 分」という概算は、セッションが db に対して開かれたビジネス ロジックのリクエストのライフサイクル、またはその他の処理に関連している可能性があります。
他の回答で示唆されている"setMaxInterval();"
ように、奇妙な「20分」現象の理由である可能性があります。
于 2013-07-08T10:31:33.710 に答える