Post

세션 Timeout 설정 및 적용 우선순위

1. 세션 Timeout

Servlet에서 모든 세션 객체는 Timeout 값을 가지고 있으며 따로 설정하지 않는 경우 기본적으로 30분이다.

2. 우선순위

1) 첫 번째

setMaxInactiveInterval(int interval) 메서드로 지정한 경우이다.

특정 세션 객체에 직접 setMaxInactiveInterval(int interval) 메서드를 통해 timeout을 지정한 경우 해당 값이 가장 우선순위로 적용된다. 이 경우 timeout 값의 단위는 초(second) 단위이다.

1
2
HttpSession session = request.getSession();
session.setMaxInactiveInterval(1800);

2) 두 번째

WEB-INF/web.xml에 설정된 timeout 값이다.

웹 애플리케이션의 배포서술자인 web.xml을 통해 timeout 지정이 가능하며, 이곳에 설정된 timeout 값이 두 번째 우선순위를 갖는다.

setMaxInactiveInterval() 메서드를 사용하지 않았다면 이 설정을 통해 지정된 timeout이 설정된다. 이곳의 timeout 설정 단위는 분(minute) 단위이다.

1
2
3
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

3) 세 번째

[톰캣 설치 디렉터리]/conf/web.xml에 설정된 timeout 값이다.

톰캣의 conf 디렉터리에는 웹 애플리케이션과 마찬가지로 web.xml 파일이 있다. 웹 애플리케이션에서 아무런 설정을 하지 않는 경우 이곳에 설정된 기본값인 30분이 적용된다.

1
2
3
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

timeout 값을 -1로 지정한 경우 세션은 강제로 제거해주지 않으면 무한으로 유지된다. 그러나 메모리관리나 보안상 좋지 않으므로 자주 사용하는 설정은 아니다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.