2012-05-07 11 views
0

私はサーブレット(GWT-RPCサーブレット)を持っていますが、ユーザーセッションがクリアされたかどうかを確認するためにのみ使用されます。ユーザーのJavaセッションを更新しないサーブレットが1つあります。

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

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

+0

その特定のJSPのセッション作成を無効にすることはできますか? – CoolBeans

+0

サーブレット – benstpierre

答えて

0

サーブレットの仕様では、セッションにアクセスするすべての要求がセッションの最後にアクセスされた時間を更新し、セッションの存続期間を延ばす必要があります。 「正しい」解決方法は、セッションが期限切れになったかどうかを正確に知る必要がある理由によって異なります。私は

は「CUSTOM_LAST_SESSION_ACCESS」と呼ばれるセッション変数を更新するサーブレットフィルタを作成...あなたが本当にしたいhwat今の javax.servlet.http.HttpSessionListener

+0

すべてのjavascriptアプリケーション(GWT経由)にクライアントサイドタイマーを設定して、セッションが終了したことを検出し、これを警告するポップアップを表示するか、ログインページにリダイレクトする必要があります。 – benstpierre

+1

セッションリスナーはあなたを助けるつもりはありません。 –

0

これだった私の解決策であると思われます。 webappへのリクエストは、この変数を現在のタイムスタンプに更新します。

セッションが無効になっていない場合は、最後の30分間にその変数が更新されていれば、ajax経由でJavascriptタイマーチェックを行います。

これは、ブラウザを閉じることがない場合、セッションがjavascript呼び出しによって無効になることを意味します。ブラウザを閉じると、30分以上経ってもHTTPリクエストが発生しないので、標準のJavaセッションクリーンアップが発生します。

関連する問題