使用特定的Java EE JSF Web应用程序计算活动用户数的最佳方法/模式是什么?

我知道的两种方法是HttpSessionListener和使用JMX Web Bean,如果还有第三种更好的方法,我欢迎提出建议。我只是想找出最优雅的解决方案。

非常感谢帮助

最佳答案

如果要在不使用任何框架的情况下在简单的Java Web应用程序中同时跟踪活动用户的数量,则实现此目标的标准方法是实现HttpSessionListener。下面的代码仅是实现方式的参考。

import java.util.concurrent.atomic.AtomicInteger;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class ActiveUserCounter implements HttpSessionListener {

      private static AtomicInteger activeSessions = new AtomicInteger();

      public void sessionCreated(HttpSessionEvent se) {
              activeSessions.incrementAndGet();
      }

      public void sessionDestroyed(HttpSessionEvent se) {
                if(activeSessions.get() > 0)
                       activeSessions.decrementAndGet();
      }

     public static int getActiveSessions() {
             return activeSessions.get();
      }
}


在web.xml中定义侦听器类。

08-03 14:18