我将所有已建立的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());
}
}