Web Application을 만들고 세션 관리를 적절하게 해주지 않고 세션 타임아웃을 무한으로 걸어놓고

시간이 조금 지나면 메모리가 풀이 나서 WAS가 죽어버리는 일이 종종 있다.

이런 문제를 미연에 방지하고 현재 세션 수가 얼마나 되는지 확인하기 위해서 세션 체크하는 리스너를 등록해보자.

HttpSessionListener를 상속받아 구현한 클래스를 만든다.

package com.test.java.listener;
 
import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
 
public class SessionCounterListener implements HttpSessionListener {
   
 static private int activeSessions;
 
    public static int getActiveSessions() {
         return activeSessions;
     }
 
    @Override
     public void sessionCreated(HttpSessionEvent arg0) {
         activeSessions++;
         System.out.println("Created!! activeSessions : " + activeSessions);
     }
 
    @Override
     public void sessionDestroyed(HttpSessionEvent arg0) {
         activeSessions--;
         System.out.println("Destoryed!! activeSessions : " + activeSessions);
     }
 }

다음으로 web.xml에 리스너를 등록합니다.

 <listener>
  <listener-class>com.test.java.listener.SessionCounterListener</listener-class>
 </listener>

또한 세션 종료시간을 정합니다.

 <session-config>
        <session-timeout>15</session-timeout>
 </session-config>
Posted by 미랭군