2013-05-14 3 views
3

사용자의 모든 세션을 만료시킬 수 있습니까?
을 사용하여 session을 만료시킬 수 있음을 알고 있습니다.사용자의 모든 세션을 만료시킬 수 있습니까?

서블릿/JSP 인 Tomcat을 사용하고 있습니다. 세션에서

은 내가 속성 userId 있습니다. 우리는이 session 특정 사용자에 속하는지 정의하는 기초

.

은 내가 특정 사용자 ID가 포함 된 모든 세션을 무효화해야하는 필요가있다.

+5

'HttpSessionListener'를 생성하고 각각의 생성 된 세션을'List'에 추가하여'context'에 넣을 수 있습니다. 그런 다음'List'를 반복하여 속성에 대한 각'session' 검사를 얻고'invalidate()'!! – NINCOMPOOP

+0

모든 세션 값을 비울 수 있습니다 .. –

답변

6

사용 this code이 활성 세션을 관리하고 ID로 세션을 얻으려면, 당신은이 세션에 전화가 한 번 필요 무효화 할 수 있습니다 ..

public class SessionListener implements HttpSessionListener 
{ 

    private static Map<String, HttpSession> map = new 
            HashMap<String, HttpSession>(); 

    public void sessionCreated(HttpSessionEvent event) 
    { 
     String id = event.getSession().getId(); 
     logger.debug("session created : " + id); 
     // STORE THE SESSOIN FOR EXAMPLE IN DATABASE 
     map.put(id, event.getSession()); 
    } 

    public static HttpSession getHttpSession(String sessionID) 
    { 
     return sessionObjectMap.get(sessionID); 
    } 

    public void sessionDestroyed(HttpSessionEvent event) 
    { 
     // get the destroying session...    
    } 
} 
+0

좋은 답변 votedup. . 세션을 파기 할 때마다 .sessionDestroyed()가로드되고 호출됩니다. . 우리가 모든 세션을 파괴하려고 할 때만 오버로드 할 수 있습니까? –

+0

HttpSessionListener 인터페이스에 있습니다. 최소한 선언을 구현해야합니다. – CloudyMarble

+1

HashMap은 스레드로부터 안전한 클래스가 아니므로이 코드는 스레드로부터 안전하지 않습니다. 또한 "맵"은 결코 정리되지 않으므로 세션이 메모리에 영구히 남아있어 메모리 누수가 발생합니다. –

0

당신은 비어있는 모든 세션 값을 만들 수 있습니다

+3

이것은 OP가 원하는 것이 아닙니다. !!!! – NINCOMPOOP

1

session.removeAttribute("userId"); 
HttpSessionListener 구현하여 청취자를 확인하고, 데이터 구조를 각각 생성 세션을 추가한다. . 지도를위한지도 또는 목록

같은 값으로 SessionId as Keysession object를 사용합니다. . . . 모든 세션이 컨테이너에 의해 생성 될 때

무시 sessionCreated(HttpSessionEvent event)sessionDestroyed(HttpSessionEvent event)

sessionCreated(HttpSessionEvent event) 방법 모두가 호출된다. . 우리는이 창조 시간에 우리가 그걸로하고 싶은 일을 할 수 있습니다. . 같은 목록에 추가하거나 어느 세션이 파괴되거나 무효화 (중 코드 또는 서버가 시간 초과)하는 경우

sessionDestroyed(HttpSessionEvent event)가 호출 될지도. . 우리는 파괴하기 전에 그걸로 무엇을 할 수 있습니다. . . 총 로깅 된 시간과 같습니다. . 목록 또는지도에서 삭제하십시오. .

관련 문제