Javaセッションタイムアウト
1. 概要
このチュートリアルでは、session timeout in a Servlet based web applicationを設定する方法を示します。
2. web.xmlのグローバルセッションタイムアウト
すべてのHttpセッションのタイムアウトは、Webアプリケーションのweb.xmlで構成できます。
...
10
タイムアウトの値は秒単位ではなくin minutesに設定されていることに注意してください。
興味深いサイドノードは、XMLデプロイメント記述子の代わりに注釈を使用できるサーブレット3.0環境では、no way to programmatically set the global session timeoutが存在することです。 セッションタイムアウトのプログラムによる構成には、サーブレット仕様JIRAで未解決の問題がありますが、この問題はまだ予定されていません。
3. 個々のセッションごとのプログラムによるタイムアウト
the current session onlyのタイムアウトは、javax.servlet.http.HttpSessionのAPIを介してプログラムで指定できます。
HttpSession session = request.getSession();
session.setMaxInactiveInterval(10*60);
分単位の値を持つ<session-timeout>要素とは対照的に、setMaxInactiveIntervalメソッドは値in secondsを受け入れます。
4. Tomcatセッションタイムアウト
すべてのTomcatサーバーは、Webサーバー全体に対してグローバルに構成できるa default web.xml fileを提供します。これは次の場所にあります。
$tomcat_home/conf/web.xml
このデフォルトのデプロイメント記述子は、<session-timeout>を30分の値に構成します。
展開された個々のアプリケーションは、独自のweb.xml記述子で独自のタイムアウト値を提供し、will override this global web.xml構成よりも優先されます。
同じことがpossible in Jetty as wellであることに注意してください:ファイルは次の場所にあります:
$jetty_home/etc/webdefault.xml
5. 結論
このチュートリアルでは、サーブレットJavaアプリケーションでのhow to configure the timeout of the HTTP Sessionの実用的な側面について説明しました。 また、TomcatとJettyの両方で、これをWebサーバーレベルで設定する方法を示しました。
これらの例の実装はthe github projectにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。
プロジェクトがローカルで実行されると、ホームページhtmlにアクセスできます: