访问远程MBean服务器

par*_*rkr 11 java jboss jmx mbeans

我正在使用JBoss运行客户端/服务器应用程序.

如何连接到服务器JVM的MBeanServer?我想使用MemoryMX MBean来跟踪内存消耗.

我可以使用JNDI查找连接到JBoss MBeanServer,但java.lang.MemoryMX MBean未在JBoss MBeanServer中注册.

编辑:要求从客户端以编程方式访问内存使用情况.

Kro*_*que 17

我写了一个这样的课:

import javax.management.remote.JMXServiceURL;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;

public class JVMRuntimeClient 
{
    static void main(String[] args) throws Exception 
    {
        if (args == null)
    {
        System.out.println("Usage: java JVMRuntimeClient HOST PORT");
    }
    if(args.length < 2)
    {
        System.out.println("Usage: java JVMRuntimeClient HOST PORT");
    }

    try
    {
        JMXServiceURL target = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+args[0]+":"+args[1]+"/jmxrmi");
        JMXConnector connector = JMXConnectorFactory.connect(target);
        MBeanServerConnection remote = connector.getMBeanServerConnection();

        /**
        * this is the part where you MUST know which MBean to get
        * com.digitalscripter.search.statistics:name=requestStatistics,type=RequestStatistics
        * YOURS WILL VARY!
        */
        ObjectName bean = new ObjectName("com.digitalscripter.search.statistics:name=requestStatistics,type=RequestStatistics");

        MBeanInfo info = remote.getMBeanInfo(bean);
        MBeanAttributeInfo[] attributes = info.getAttributes();
        for (MBeanAttributeInfo attr : attributes)
        {
            System.out.println(attr.getDescription() + " " + remote.getAttribute(bean,attr.getName()));
        }
        connector.close();
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
        System.exit(0);
    }
   }
}
Run Code Online (Sandbox Code Playgroud)


ska*_*man 5

与JBoss服务器的MBeanServer不同,JVM的MBean服务器默认情况下不允许远程监控.您需要设置各种系统属性以允许:

http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html