私が見つけた最善の解決策は、HttpSessionListenerを確立することでした:)そのためにいくつかのメソッドをオーバーライドする必要があります:
public class HttpSessionCollector implements HttpSessionListener {
private static final Map<String, HttpSession> sessions = new HashMap<String, HttpSession>();
@Override
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.put(session.getId(), session);
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
sessions.remove(event.getSession().getId());
}
public static HttpSession find(String sessionId) {
return sessions.get(sessionId);
}
public static Map<String, HttpSession> getSessions() {
return sessions;
}
}
次に、リスナーを/WEB-INF/web.xmlに設定します
<web-app>
<listener>
<listener-class>[yourpack].HttpSessionCollector</listener-class>
</listener>
...
</web-app>
これで、パッケージ内のどこからでもHttpSessionCollectorを呼び出すことができます。たとえば、すべての有効なセッションを取得するには、次のことを行う必要があります。
private Map<String, HttpSession> sessions;
sessions=HttpSessionCollector.getSessions();