Элегантная проверка правильности ссылки HTTPSession - PullRequest
0 голосов
/ 03 июня 2011

Я храню все установленные объекты HTTPSession в хэш-карте. Является в любом случае, чтобы определить, является ли HTTPSession еще действительным прежде чем поставить сообщение в очередь?

Пример: если я перебираю хеш- карта, я хочу ставить в очередь только сообщения для объектов HTTPSession, которые действительный.

UPDATE

Если кому-то интересно, мне нужна эта логика с использованием gwt-comet. Решение (как указал Томаш Нуркевич) можно найти внизу на этой странице.

1 Ответ

2 голосов
/ 03 июня 2011

К сожалению, для этого нет явного 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());
    }
}
...