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