티스토리 뷰

Daylogs/Java

톰캣 세션 설정

ohgyun 2009. 2. 10. 14:30
출처: http://javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=1195004374&p=3&s=t


tomcat web.xml 에 보면

<session-config>
<session-timeout>360</session-timeout>
</session-config>

세션 timeout 설정 부분이 있습니다.
위와 같이 6시간을 설정해 놓았는데도.. 계속해서 세션이 끊어집니다.


* 저 <session-timeout> 이 어떻게 작동을 하는지 알고 싶습니다.

1. 웹에 설정한 시간만큼 액션이 없을 때 tomcat에서 세션이 끊어지는 걸로 알고 있습니다.
맞는지요?

2. 웹에서 계속해서 리플래시 되는 화면이 있는데.. 이것도 계속 액션 작용을 하는 것인지요??

3. 웹이 한 도메인으로 되어 있지만... 실제로 웹서버는 2대(1,2)로 동작하고 있습니다.
로그인 하면 한쪽에만 붙어 있는 것이 아니라... 1로 붙어 있다가 2로 붙고...
왔다 갔다 한다는데요.. 이럴때 세션이 끊어지는 것인지....

알고 싶습니다.



제목 : Re: RE: 톰켓 세션에 관해서...
글쓴이: 손님(guest) 2007/11/14 10:39:34 조회수:962 줄수:24

Tomcat에서 세션 타임아웃 설정은 적용 우선순위 순서로 다음 세 곳에서 가능합니다.
(1) 프로그램안의 session.setMaxInactiveInterval()
(2) 웹어플리케이션의 WEB-INF/web.xml
(3) Tomcat의 conf/web.xml

만약 Tomcat의 conf/web.xml에 적용한 타임아웃 설정이 먹지 않는다면 (1) 또는 (2)가 설정 되어 있는지 확인해야 합니다.
(*) 만약 다른 WAS를 사용할 경우에는 web.xml 보다 해당 vendor의 deployment descriptor의 설정이 우선합니다.

세션 관리자는 마지막으로 세션에 접근한 시간을 기준으로 설정한 시간 동안 사용되지 않는 세션을 제거합니다.

3번 질문에서 웹서버를 2대 사용하고 계시다고 했는데 Tomcat은 몇 대가 설치되어 있는지요?
만약 Tomcat을 여러대를 사용하는 경우에는 sticky session으로 설정해 session 공유없이 사용하거나,
클러스터로 묶어 session을 공유하도록 해야합니다.
이렇게 설정되어 있지 않다면 언제든지 세션이 끊길 수 있습니다.


제목 : Re: RE: Re: RE: RE : 톰켓 세션에 관해서...
글쓴이: 손님(guest) 2007/11/20 18:38:14 조회수:786 줄수:15

"세션에 접근한 시간을 기준으로" 란 말은 session.setAttribute() 또는 session.getAttribute() 를 했을때 인가요?? --> 제가 오해하기 좋게 적었네요. Tomcat은 session cookie를 가진 request가 전달되면 해당 session 사용여부와는 관계없이 해당 세션의 last access time을 갱신합니다. 즉 마지막 http 요청을 받은 시간이 기준이 됩니다. Apache + Tomcat 연동시 sticky session 설정은 mod_jk의 loadbalancer에 해줍니다. (*) 로드 밸런스 설정이 되어 있다면 기본값이 sticky_session=true로 sticky 설정이 되어 있습니다. 그리고 톰캣의 server.xml의 Engine에도 jvmRoute값을 설정하고 이 값을 mod_jk에 설정한 worker명도 이와 동일하게 해줍니다. 자세한 사항은 톰캣의 로드 밸런스 설정을 참고하세요. http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html







반응형
댓글
공지사항