残念ながら、これに対する明示的な 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());
}
}