我试图使用JMX API来获取活动会话数为Web应用程序。
- 是否有可能使用JMX API来获取这种信息?
- 如果是的话,它是如何可靠的会是谁?
- 如何完成这件事的任何示例代码?
我一直在阅读JMX教程和文档,但他们给我的技术是什么概述。 我只是不能找出我所需要的,但。
我试图使用JMX API来获取活动会话数为Web应用程序。
我一直在阅读JMX教程和文档,但他们给我的技术是什么概述。 我只是不能找出我所需要的,但。
一旦你配置应用服务器以公开一个JMX端口您可以通过使用类似的JConsole或JVisualVM做到这一点。 你没有提到你正在使用但对Tomcat的,它是在这里描述的应用服务器: http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html 。 一旦你与JConsole的连接,Tomcat的暴露具有的会话信息的MBean但同样这取决于你使用的容器。
ObjectName name = new ObjectName("Catalina:type=Manager,path=/NAME_OF_APP,host=localhost");
ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions");
为了跟踪会话,你可以使用一个HttpSessionListener 。 如果要公开通过JMX活动的会话,你可以注册一个MBean并从其他应用程序(见JMX文档)调用它。
JBoss的已经暴露通过JMX活动会话数,但只有在整个服务器,而不是每个Web应用程序。 如果你只有使用一个Web应用程序,那么应该是你确定。
进入端口8080上JMX控制台,并查找称为入口host=localhost,path=/,type=Manager
。 里面,你会找到有效的会话数的条目。
通过skaffman给出的答案是相当有帮助的,但我会修订该JBoss是能够通过找给你每Web应用程序会话:
主机=本地主机,路径= / your_webapp_context,类型=管理器
(你感兴趣的Web应用程序的情况下更换your_webapp_context ...)