0

ユーザーセッションがクリアされたかどうかを確認するためにのみ使用されるサーブレット(GWT-RPCサーブレット)があります(セッション変数がnullであるかどうかを調べて確認することにより)。

問題は、これがユーザーのブラウザのタイマーで実行されると、セッションがクリアされたかどうかを確認するための各要求が、セッション時間をさらに 30 分間更新することです。タイマー リクエストの頻度をセッション タイムアウトより少なくすることができます。たとえば、セッションが 30 分ごとに期限切れになり、35 分ごとにチェックすると、セッションが終了したことを最終的に適切に検出するのに最大 70 分かかります。

サーブレットリクエストでセッションを更新しない方法を知っている人はいますか?

4

2 に答える 2

0

サーブレット仕様では、セッションにアクセスするすべての要求がセッションの最後にアクセスされた時刻を更新するため、セッションの寿命を延ばす必要があります。「正しい」解決策は、セッションが期限切れになったかどうかを正確に知る必要がある理由によって異なります。私はあなたが本当に欲しいhwatはjavax.servlet.http.HttpSessionListener

于 2012-05-07T20:14:04.133 に答える
0

これが今のところ私の解決策でした...

「CUSTOM_LAST_SESSION_ACCESS」というセッション変数を更新するサーブレット フィルタを作成します。Web アプリケーションへのすべての要求により、この変数が現在のタイムスタンプに更新されます。

その変数が過去 30 分間に更新されているかどうかを ajax 経由で Javascript タイマーにチェックさせます。セッションを無効にしない場合。

これは、ブラウザーを閉じない場合、JavaScript 呼び出しによってセッションが無効になることを意味します。ブラウザーを閉じると、HTTP 要求が 30 分以上発生していないため、標準の Java セッションのクリーンアップが行われます。

于 2012-05-07T22:29:34.540 に答える