0

確立されたすべての HTTPSession オブジェクトをハッシュマップに保存しています。メッセージをキューに入れる前に HTTPSession がまだ有効かどうかを判断する方法はありますか?

例: ハッシュマップを繰り返し処理している場合、有効な HTTPSession オブジェクトのメッセージのみをキューに入れたいとします。

アップデート

誰かが興味を持っている場合は、gwt-comet を使用してこのロジックが必要でした。(Tomasz Nurkiewicz が指摘したように) 解決策は、このページの下部にあります。

4

1 に答える 1

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());
    }
}
于 2011-06-03T06:31:07.807 に答える