3

如何获取 Xpage 中的活动会话数。我正在尝试使用托管 bean,但它只返回一个奇怪的字符串。这是简单的代码:

导入 javax.servlet.http.HttpSessionEvent;
导入 javax.servlet.http.HttpSessionListener;

公共类 SessionCounterListener 实现 HttpSessionListener {

  私有静态int totalActiveSessions;

  公共静态 int getTotalActiveSessions(){
    返回总活动会话数;
  }

  公共无效会话创建(HttpSessionEvent arg0){
    总活动会话++;
    System.out.println("sessionCreated - 添加一个会话到计数器");
  }

  公共无效会话销毁(HttpSessionEvent arg0){
    totalActiveSessions--;
    System.out.println("sessionDestroyed - 从计数器中扣除一个会话");
  }
}

我从这里得到这个。但是当我调用时SessionCounterListener.getTotalActiveSessions(),它只返回 0(无论是否有人登录)。

如果你有时间,你可以在这里查看我的测试数据库。

请帮我。非常感谢!

4

1 回答 1

6

必须在应用程序中注入会话侦听器才能按需要工作。否则 sessionCreated/sessionDestroyed 方法将永远不会被调用并且总是返回 0。但是 XPage 和“传统的”JSF 之间存在一些差异。看看这里:

http://www.openntf.org/projects/pmt.nsf/66d9103768cc2fed85256c59006b5433/00a38cdf382f4893862578b80082dd15!OpenDocument

或者看看XSP Starterkit的内部。

编辑:

要添加会话侦听器,请执行以下操作:

  1. 切换到java视角
  2. 在“Code/Java”文件夹中,创建文件夹“META-INF”
  3. 在这个 META-INF 文件夹中,创建一个文件夹“services”
  4. 在“服务”文件夹中创建一个名为“com.ibm.xsp.core.events.SessionListener”的文件
  5. 在此文件中,添加您的类的全名:package.SessionCounterListener

现在,应该激活会话侦听器。

于 2012-06-25T04:16:49.340 回答