次のような新しいリスナーを作成する必要があります。
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;
public class SessionCounter implements HttpSessionListener {
private List sessions = new ArrayList();
public SessionCounter() {
}
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.add(session.getId());
session.setAttribute("counter", this);
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.remove(session.getId());
session.setAttribute("counter", this);
}
public int getActiveSessionNumber() {
return sessions.size();
}
}
その後、このクラスを web.xml に追加します
<web-app>
<listener>
<listener-class>
SessionCounter
</listener-class>
</listener>
</web-app>
アクティブなユーザーの数をカウントできる場合:
SessionCounter counter = (SessionCounter) session.getAttribute("counter");
counter.getActiveSessionNumber()