如何获得当前web项目内存里驻留的所有存活的http session列表?

web项目是springmvc + spring + hibernate

对于每个session

我存一个map (session_id, token)

然后定时任务,每天去清理掉那些map,如果其session已经失效的话

有何方法获得当前web项目内存里驻留的所有存活的http session列表?

阅读 4.6k
3 个回答
public class HttpSessionCollector implements HttpSessionListener {
    private static final Map<String, HttpSession> sessions = new HashMap<String, HttpSession>();

    @Override
    public void sessionCreated(HttpSessionEvent event) {
        HttpSession session = event.getSession();
        sessions.put(session.getId(), session);
    }


    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        sessions.remove(event.getSession().getId());
    }

    public static HttpSession find(String sessionId) {
        return sessions.get(sessionId);
    }

}

How do I get a list of all HttpSession objects in a web application?

可以通过实现HttpSessionListener接口来进行session的管理,实现sessionCreated和sessionDestroyed就可以监听session的创建和销毁了,如果不按servlet标准的话看tomcat源码吧,然后反射拿到内部的session集合就行了,之前有这样干过。

遍历Session,获得上一次更新时间,与现在时间比较,大于一定值删掉.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题