2011-02-08 101 views
18

Tomcatがサーブレットセッションのために送信するJSESSIONID Cookieの有効期限を設定する最適な方法は何ですか?JSESSIONID Tomcatの有効期限付きCookie

デフォルトでは、Cookieの有効期限は「セッション」と思われます。これは、ブラウザが再起動するとすぐにクライアントでセッションが消えることを意味します。しかし、私はブラウザを再起動した後でも、それを12時間開いたままにしておきたいと思います(それに応じてサーバーのセッションタイムアウトを設定します)。

Tomcat内に有効期限を設定する方法はありますか?いくつかの構成オプションまたは拡張モジュールを使用していますか?または、サーブレットフィルタを使用してJSESSIONIDの有効期限を設定する信頼できる方法はありますか?

+0

ティムこんにちは、私は同様の問題に悩まされています。あなたはどちらの解決方法を選択しましたか、達成しようとしていたもので成功しましたか、助けてください! – Ashish

答えて

51

誰がこの情報を探している場合、私は、これは古い質問ですけど、:サーブレット3.0では

、これは単に、web.xmlで指定することができます。

<session-config> 
    <session-timeout>525600</session-timeout> 
    <cookie-config> 
     <max-age>31536000</max-age> 
    </cookie-config> 
</session-config> 
+0

私はそうだった。ありがとうございました。 –

+0

これは良い情報である限り、質問に新しい情報を追加することは決して遅くないことを証明しています!あなたは私を助けてくれてありがとう。 –

+2

もう少し遅い情報ですが、fwiw、session-timoutは分単位で、最大年齢は秒単位です! –

-2

あなたはセッションが12時間後に期限切れとサーバーの再起動を生き残る、あなたのweb.xmlにこれを追加したい場合は、次の

<session-config> 
    <session-timeout>720</session-timeout> 
</session-config> 

Tomcatが、彼らはアプリの再起動後も存続するようにセッションをシリアライズするために、デフォルトで設定されています。 http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html#Restart%20Persistence

+5

残念ながら、の唯一の効果は、サーバーがセッションを12時間保存することです。しかし、ブラウザでは、クッキーは有効期限なしで設定されているため、ブラウザが閉じられるとすぐに消えます。 –

1

Tomcatコードを変更せずに、あなたが望むことをすることはできないと思います。

ただし、ユーザがセッションを開始して12時間アクティブになると、セッションタイムアウトが更新されます(リクエストごとにタイムアウトが更新されます)が、そのクッキーが勝ちますこのように今でも活動していても、12時間後にユーザーはセッションを失うことになります。

関連する問題