统计部署在JBoss 3.2.1上的J2EE应用程序中的活动会话数
我管理一个部署在JBoss3.2.1上的J2EE应用程序。作为我向客户提供服务的一部分,我希望提供显示活动会话数的报告。我实现了一个简单的类和一个JSP页面,用于检索活动会话的数量,但我发现了一个缺陷:检查会话数量的过程本身会创建一个新会话,因此会增加会话的数量 以下是我的课程代码:统计部署在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
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"%>