6

我正在尝试使用 JMX API 来获取 Web 应用程序的活动会话计数。

  1. 是否可以使用 JMX API 来获取此类信息?
  2. 如果是,它有多可靠?
  3. 有关如何完成此操作的任何示例代码?

我一直在阅读 JMX 教程和文档,但它们让我了解了这项技术是什么。我只是无法确定我需要什么。

4

5 回答 5

5

将应用服务器配置为公开 JMX 端口后,您可以使用 JConsole 或 JVisualVM 之类的工具来完成此操作。您没有提及您使用的是哪个应用服务器,但对于 Tomcat,它在此处进行了描述:http: //tomcat.apache.org/tomcat-5.5-doc/monitoring.html。与 JConsole 连接后,Tomcat 会公开一个具有会话信息的 MBean,但它再次取决于您使用的容器。

于 2009-07-11T04:22:45.200 回答
3
ObjectName name = new ObjectName("Catalina:type=Manager,path=/NAME_OF_APP,host=localhost"); 
ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions");
于 2011-05-26T16:06:56.550 回答
2

要跟踪会话,您可以使用HttpSessionListener。如果您想通过 JMX 公开活动会话,您可以注册一个 mbean 并从其他应用程序调用它(请参阅 JMX 文档)。

于 2009-07-10T23:54:57.343 回答
1

JBoss 已经通过 JMX 公开了活动会话计数,但仅在整个服务器上,而不是每个 webapp。如果您只使用一个 web 应用程序,那么这对您来说应该没问题。

转到端口 8080 上的 JMX 控制台,并查找名为host=localhost,path=/,type=Manager. 在里面你会找到一个活动会话计数的条目。

于 2009-07-12T15:15:17.977 回答
0

skaffman 给出的答案非常有帮助,但我会修改 JBoss 能够通过查找以下内容为您提供每个 webapp 的会话:

主机=本地主机,路径=/your_webapp_context,类型=经理

(将 your_webapp_context 替换为您感兴趣的 webapp 的上下文...)

于 2010-03-16T16:29:56.713 回答