Session
세션은 접속한 사용자의 상태를 담은 객체입니다. 아파치 웹서버나 톰캣같은 서블릿 컨테이너는 웹환경에서 사용자가 접속중이다 라는 개념이 없으므로 특별한 방식을 사용합니다. 그것은 세션 객체를 생성해두고 일정시간(TIMEOUT)내에 클라이언트가 HTTP 요청을 보낸경우 아직 사용자가 떠나지 않았다고(접속중) 판단하는 방법입니다.
Timeout
클라이언트가 서버에 접근하고 최초에 세션이 생성되면 해당 세션객체는 Timeout값을 가지게 됩니다. 그러나 생성직후 timeout만큼 시간이 지나 세션객체가 소멸하는것이 아닌 사용자가 서버에 마지막으로 요청을 보낸이후 timeout 만큼 아무런 요청이 없는 경우 세션객체를 소멸시킵니다.
여기서 클라이언트의 마지막 접속시간(http 요청시각)은 Access Time이라는 값으로 관리합니다. 즉 Access Time에서 Timeout만큼 지난 시간동안 아무런 요청이 없는 경우 해당 사용자는 접속을 끊은것으로 보고 세션 객체를 소멸시킵니다.
Session의 Timeout 설정 및 적용 우선순위
JSP/Servlet에서 모든 세션 객체는 Timeout값을 가지고 있으며 따로 설정해주지 않는 경우 기본적으로 30분입니다.
또한 웹어플리케이션이나 톰캣같은 서블릿컨테이너등의 설정으로 여러곳에서 세션 Timeout을 지정할 수 있기때문에 어느 설정이 우선적용되는지 알아두는것이 좋습니다.
** 세션 타임아웃 적용 우선순위
1. 프로그램에 코딩된 session.setMaxInactiveInterval(int interval)
=> setMaxInactiveInterval(int interval) 메소드를 통해 timeout을 지정하게 되면 가장 우선순위로 적용 됩니다.
<%
session.setMaxInactiveInterval(3600);
%>
2. 각 웹 어플리케이션의 WEB-INF/web.xml
=> 웹 어플리케이션의 배포서술자(Deployment Descritor)인 web.xml을 통해 timeout 지정이 가능하며,
이곳에 설정된 timeout값이 두번째로 우선순위로 적용 됩니다.
<session-config>
<session-timeout>60</session-timeout>
</session-config>
3. [tomcat설치디렉토리]/conf/web.xml
=> 톰캣의 conf 디렉터리에는 어플리케이션과 마찬가지로 web.xml 파일을 가지고 있고, 우선순위인
setMaxInactiveInterval, 웹 어플리케이션의 web.xml에 설정하지 않으면 이곳에 설정된 값으로 적용됩니다.
<session-config>
<session-timeout>60</session-timeout>
</session-config>
'Apache > Tomcat' 카테고리의 다른 글
[Tomcat] 설정 옵션 (0) | 2021.09.09 |
---|