优雅地检查HTTPSession引用是否仍然有效

时间:2011-06-03 06:05:46

标签: java httpsession

我将所有已建立的HTTPSession对象存储在哈希映射中。是 无论如何确定HTTPSession是否仍然有效 在收到消息之前?

示例:如果我正在迭代哈希 - map,我只想为HTTPSession对象排队消息 有效的。

更新

如果有人有兴趣,我需要使用gwt-comet这个逻辑。解决方案(如Tomasz Nurkiewicz指出的那样)可以在底部this页面找到。

1 个答案:

答案 0 :(得分:2)

不幸的是,没有明确的API。但很容易以干净和优雅的方式解决。

实现HttpSessionListener在并发映射中存储每个新创建的会话,并在会话销毁时将其删除。这样,您的地图将始终只包含有效的会话。更清洁,你不觉得吗?

public class SessionStoringListener implements HttpSessionListener {

    private Map<String, HttpSession> sessions = new ConcurrentHashMap<String, HttpSession>();

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

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