统计部署在JBoss 3.2.1上的J2EE应用程序中的活动会话数

统计部署在JBoss 3.2.1上的J2EE应用程序中的活动会话数,jboss,count,batch-file,session,Jboss,Count,Batch File,Session,我管理一个部署在JBoss3.2.1上的J2EE应用程序。作为我向客户提供服务的一部分,我希望提供显示活动会话数的报告。我实现了一个简单的类和一个JSP页面,用于检索活动会话的数量,但我发现了一个缺陷:检查会话数量的过程本身会创建一个新会话,因此会增加会话的数量 以下是我的课程代码: package com.hudsongates; import javax.servlet.http.*; public class SessionCount implements HttpSessionLis

我管理一个部署在JBoss3.2.1上的J2EE应用程序。作为我向客户提供服务的一部分,我希望提供显示活动会话数的报告。我实现了一个简单的类和一个JSP页面,用于检索活动会话的数量,但我发现了一个缺陷:检查会话数量的过程本身会创建一个新会话,因此会增加会话的数量

以下是我的课程代码:

package com.hudsongates;

import javax.servlet.http.*;

public class SessionCount implements HttpSessionListener
{
  private static int numberOfSessions = 0;

  public void sessionCreated (HttpSessionEvent evt)
  {
    numberOfSessions++;
  }

  public void sessionDestroyed (HttpSessionEvent evt)
  {
    numberOfSessions--;
  }

  // here is our own method to return the number of current sessions
  public static int getNumberOfSessions()
  {
    return numberOfSessions;
  }

}
JSP页面如下所示:

<html>
<head>
<title>Active Sessions</title>
</head>
<body>
activeSessions=<%=com.hudsongates.SessionCount.getNumberOfSessions()%>
</body>
</html>
问题是,当我执行批处理文件时,会出现以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: com/hudsongates/SessionCount/getNumberOfSessions()
我是否需要向类中添加“main”方法?如果是,它会做什么?有没有更好的方法来实现我的最终目标,准确计算活动会话的数量?请记住,会话计数需要以以下格式写入日志文件:

activeSessions=24
提前感谢,


保罗想到了两种可能性: 可以将JSP配置为不创建新会话。将以下内容粘贴在JSP的顶部:

<%@ page session="false"%>


或者,编写一个实现JBoss的ServiceMBean接口的JMX MBean,并将其部署为JBos服务。这个MBean将查询会话计数,并显示在JBoss的JMX控制台上。您可以使用web浏览器从那里监视它,而不干扰会话计数。

JBoss JMX控制台在host=localhost,path=/your_PROJECT,type=Manager中已经有一个集成的会话计数器


顺便说一下,您应该使用AtomicInteger或synchronize来解决并发问题。

使用似乎已经解决了问题。谢谢好的,现在来点“爱”怎么样?:)如何调用侦听器?我的会话始终保持在0。
<%@ page session="false"%>