我可以过期用户的所有会话吗?

Nir*_*hra 3 java session tomcat servlets java-ee

我可以过期用户的所有会话吗?
我知道我可以session通过使用来过期session.invalidate().

我正在使用Tomcat,servlet/JSP.

在一个会话中我有一个属性userId.

在此基础上,我们定义这session属于特定用户.

我需要使包含特定userId的所有会话无效.

Clo*_*ble 6

使用此代码管理您的活动会话并按其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...               
    }  
} 
Run Code Online (Sandbox Code Playgroud)

  • 该代码不是线程安全的,因为 HashMap 不是线程安全的类。此外,“地图”永远不会被清除,因此会话将永远留在内存中,从而导致内存泄漏。 (2认同)