본문 바로가기
IT/WAS

Jeus Session timeout

by 조병희 2010. 10. 12.
Web Application에서 session 의 timeout 시간은 Servlet Spec.에 명시된 web.xml에 지정합니다. 시간 단위는 분입니다.

CONTEXT/WEB-INF/web.xml에 session timeout 설정이 없는 경우에는 JEUS의 Servlet Engine에서 가지고 있는 webcommon.xml에 설정된 값이 적용되고,
이것도 설정이 안된 경우에는 $JEUS_HOME/config/[HOSTNAME]/[SERVLET_ENGINE_NAME]/WEBMain.xml에 설정된 값이 적용되게 됩니다.

session timeout의 우선 순위는 다음과 같습니다.

 1. CONTEXT/WEB-INF/web.xml의
   ---------------------    
   <web-app>
       ...
       <session-config>
           <session-timeout>30</session-timeout>
       </session-config>
       ...
   ---------------------    

 2. SERVLET_ENGINE/webcommon.xml
   ---------------------    
   <web-app>
       ...
       <session-config>
           <session-timeout>30</session-timeout>
       </session-config>
       ...
   ---------------------    

 3. SERVLET_ENGINE/WEBMain.xml
   ---------------------    
   <web-container>
       <context-group>
           ...
           <session-config>
               <timeout>20</timeout>
               <shared>true</shared>
           </session-config>
           ...
   ---------------------
/*******************************************/
 
 

JEUS에서 세션의 타임아웃은 HTTPSession.invalidate()메소드가 호출되지 않는 이상, 세션체크타임아웃 설정값에 설정된 시간마다 체크하여 세션을 invalidate시키게 됩니다.

해당 설정값은 WEBMain.xml의 web-container > monitoring > check-session 이며

<check-session>60000</check-session>

와 같이 설정하면 60초마다 세션타임아웃을 체크한다는 말입니다.

이값은 별도의 설정이 없을 경우, Default값인 5분(300000mc)이 적용되므로 세션타임아웃을 2분으로 설정하여도 최소 세션타임아웃체크시간인 5분 이상이 되어야 세션매니저의 의해 세션의 invalidate가 발생합니다.

따라서, 세션타임아웃을 5분이하로 세팅하실경우, 이 check-session 을 더 적게 잡아주셔야합니다.

참고로 check-session 이 길면 길수록 퍼포먼스가 향상됩니다.

 

<<WEBMain.xml>>

<web-container>
 <monitoring>
  <check-thread-pool>60000</check-thread-pool>
  <check-class-reload>60000</check-class-reload>
  <check-session>120000</check-session>
  <check-db-connection-pool>60000</check-db-connection-pool>
 </monitoring>
    <context-group>
        <group-name>MyGroup</group-name>
        <group-docbase>web</group-docbase>
  <session-config>
            <timeout>60</timeout>
            <shared>true</shared>
   <persistent>true</persistent>
        </session-config>

 

=============================================================================

 JEUS4.2에서는 web.xml의 session-timeout설정보다 WEBMain.xml의 timeout값이 우선시 되어 적용됩니다. WEBMain.xml에 timeout설정이 없을경우, web.xml의 session-timeout을 참조하며 가장 나중에 webcommon.xml파일의 session-timeout값을 찾게 되어있습니다. 따라서 설정하신 파일중 WEBMain.xml의 세션설정을 참고로javax.servlet.http.HttpSession.getMaxInactiveInterval() 메소드를 사용하시면 현재 세션에 세팅된 세션타임아웃값을 출력해 볼 수 있으니 WEBMain.xml webcommon.xml, web.xml의 세션타임아웃값에 각기 다른 값을 설정해놓고 어떤값이 적용되는지 직접 확인해 보시는것도 좋을 것 같습니다. 

 출처 : http://blog.naver.com/mhpark94/80019282291

'IT > WAS' 카테고리의 다른 글

Jeus 와 Webtob 소개  (0) 2010.10.26

댓글