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

例如:如果我要遍历哈希-
映射,我只希望将HTTPSession对象的消息排队
有效。

更新

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

最佳答案

不幸的是,没有针对此的显式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());
    }
}

08-28 21:56