Javaセッションタイムアウト

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にアクセスできます: