我很新于JMX,我试图记录像使用的线程数、缓存、会话和其他标准值等Tomcat统计信息。我正在尝试使用Java代码实现这一点。目前为止,我已经完成了以下事情(我正在尝试访问Windows上本地Tomcat 6.0监视器的值):
1)我已经在catalina.bat中添加了以下选项: set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 之后,我重新启动了Tomcat服务器。
2)然后,我编写了以下代码。
我甚至尝试了上下文(context)而不是路径(path)。
我得到以下异常。
1)我已经在catalina.bat中添加了以下选项: set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 之后,我重新启动了Tomcat服务器。
2)然后,我编写了以下代码。
package com.ss.fg;
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
public class SystemConfigManagement
{
static MBeanServer connection = ManagementFactory.getPlatformMBeanServer();
public static void main(String[] args) throws Exception {
getActiveSession();
}
public static void getActiveSession()throws Exception
{
ObjectName name=new ObjectName("Catalina:type=Manager,path=/MMDisplay,host=localhost");
String attrValue = ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions").toString();
System.out.println(attrValue);
}
}
我甚至尝试了上下文(context)而不是路径(path)。
我得到以下异常。
Exception in thread "main" javax.management.InstanceNotFoundException: Catalina:type=Manager,path=/MMDisplay,host=localhost
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(Unknown Source)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(Unknown Source)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(Unknown Source)
at com.softsmith.floodgates.SystemConfigManagement.getActiveSession(SystemConfigManagement.java:15)
at com.softsmith.floodgates.SystemConfigManagement.main(SystemConfigManagement.java:10)
我该如何解决这个问题?
我应该添加一些jar文件,还是需要进行其他设置...
请帮忙。