13
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tomcatのセッションタイムアウト時間のリセットタイミングについて

Last updated at Posted at 2014-06-16

適当なタイトルですが、、、

セッションのタイムアウト時間はいつリセット(数え直し)されるのか気になったので実験してみました。

こんな感じのソースコードです。

SessionTestServlet
package com.sample.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/SessionTestServlet")
public class SessionTestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();

		out.println("<html>");
		out.println("<head>");
		out.println("<title>セッションテスト</title>");
		out.println("</head>");
		out.println("<body>");

		HttpSession session = request.getSession(false);
		if(session == null){
			out.println("セッションはありません。セッションを新しく作成します。<br>");
			session = request.getSession(true);
		}
		out.println("セッションタイムアウト:"+session.getMaxInactiveInterval()+"<br>");
		out.println("<a href=\"./SessionTestServlet\">再読み込み</a><br>");

		out.println("</body>");
		out.println("</html>");
	}
}

セッションタイムアウト時間はweb.xmlに下記を追加して3分に変更しておきます。

web.xml
<web-app ...>
...
  <session-config>
    <session-timeout>3</session-timeout>
  </session-config>
</web-app>

結果としては、何らかのリクエストがある度にセッションのタイムアウト時間はリセットされるようです。
セッションオブジェクトに(コード上は)一切アクセスしないようなHTMLやサーブレットにリクエストがあってもセッションのタイムアウト時間はリセットされます。

ブラウザからセッションIDを含むクッキーが渡されるので、それによりセッションのタイムアウト時間がリセットされると考えるのが正確かもしれません。

13
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?