Javaセッションタイムアウト
1. 概要
このチュートリアルでは、サーブレットベースのWebアプリケーションでセッションタイムアウトを設定する方法を示します。
2. web.xmlのグローバルセッションタイムアウト
すべてのHttpセッションのタイムアウトは、Webアプリケーションのweb.xmlで構成できます。
<?xml version="1.0" encoding="UTF-8"?>
<web-app ...>
...
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</web-app>
タイムアウトの値は、秒単位ではなく、分単位
興味深いサイドノードは、XMLデプロイメント記述子の代わりにアノテーションを使用できるサーブレット3.0環境では、グローバルセッションタイムアウトをプログラムで設定する方法がないことです。 セッションタイムアウトのプログラム構成には、サーブレット仕様JIRAで未解決の問題がありますが、この問題はまだスケジュールされていません。
3. 個々のセッションごとのプログラムによるタイムアウト
現在のセッションのみのタイムアウトは、javax.servlet.http.HttpSessionのAPIを介してプログラムで指定できます。
HttpSession session = request.getSession();
session.setMaxInactiveInterval(10*60);
とは対照的に
4. Tomcatセッションタイムアウト
すべてのTomcatサーバーは、デフォルトのweb.xmlファイルを提供します。このファイルは、Webサーバー全体に対してグローバルに構成できます。これは次の場所にあります。
$tomcat_home/conf/web.xml
このデフォルトのデプロイメント記述子は、
独自のweb.xml記述子で独自のタイムアウト値を提供する個々のデプロイ済みアプリケーションが優先され、はこのグローバルweb.xml構成をオーバーライドします。
同じことがJettyでも可能であることに注意してください:ファイルは次の場所にあります:
$jetty_home/etc/webdefault.xml
5. 結論
このチュートリアルでは、サーブレットJavaアプリケーションでHTTPセッションのタイムアウトを構成する方法の実際的な側面について説明しました。 また、TomcatとJettyの両方で、これをWebサーバーレベルで設定する方法についても説明しました。
これらの例の実装は、 githubプロジェクトにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。
プロジェクトがローカルで実行されている場合、ホームページのhtmlには次の場所からアクセスできます。