1概要

このチュートリアルでは、Servletベースの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デプロイメント記述子の代わりにアノテーションが使用される可能性があるServlet 3.0環境では、** グローバルセッションタイムアウトをプログラム的に設定する方法がないことです。

セッションタイムアウトのプログラムによる設定はサーブレット仕様JIRAに未解決の問題があります – しかし問題はまだスケジュールされていません。

** 3個々のセッションごとのプログラムによるタイムアウト

**

  • 現在のセッションのみ** のタイムアウトは、

    javax.servlet.http.HttpSession

    のAPIを介してプログラムで指定できます。

HttpSession session = request.getSession();
session.setMaxInactiveInterval(10** 60);

分単位の値を持つ

<session-timeout>

要素とは対照的に、

setMaxInactiveInterval

メソッドは秒単位の値** を受け入れます。


4 Tomcatセッションタイムアウト

すべてのTomcatサーバーはhttp://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html[デフォルトの

web.xml

ファイル]を提供します。これはWebサーバー全体に対してグローバルに設定できます。これは次の場所にあります。

$tomcat__home/conf/web.xml

このデフォルトのデプロイメント記述子は

<session-timeout>

を30分の値に設定します。

独自の

web.xml

記述子に独自のタイムアウト値を指定して、個別にデプロイされたアプリケーションが優先され、

このグローバル

web.xml


設定が上書きされます。


Jettyでも可能

も同じです。ファイルは次の場所にあります。

$jetty__home/etc/webdefault.xml


5結論

このチュートリアルでは、Servlet JavaアプリケーションでHTTPセッションのタイムアウトを設定する方法の実用的な側面について説明しました。 TomcatとJettyの両方で、Webサーバーレベルでこれを設定する方法も示しました。

これらの例の実装はhttps://github.com/eugenp/tutorials/tree/master/spring-mvc-xml#readme[the github project]にあります – これはEclipseベースのプロジェクトなので簡単ですそのままインポートして実行します。

プロジェクトがローカルで実行されているときは、ホームページのHTMLにアクセスできます。