如何将Mbeans添加到远程服务器?

时间:2018-07-18 15:42:39

标签: java jmx visualvm mbeans

通常,以编程方式将MBean添加到本地进程很简单。您将执行以下操作:

// Assuming you have already written code for your MBean
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
server.registerMBean(Object, ObjectName);

但是,有没有一种方法可以将Mbean添加到远程服务器?据我所知,没有办法检索远程进程的MBeanServer。我知道您可以检索MBeanServerConnection,但这只会允许您访问Mbean,而不能修改/添加新的。

谢谢!

2 个答案:

答案 0 :(得分:0)

可以,但是还有一些其他挑战。问题是您必须在目标MBeanServer的类路径中具有MBean实现和所有支持的类。如果这样做,则可以使用MBeanServerConnection createMBean方法之一来创建和注册MBean。其中两个使用默认的类路径:

如果目标(或支持)类不在默认的类路径中,则可以在注册时动态加载它们,这有点棘手,并且需要使用加载器MBean充当创建和注册操作的类加载器:

名为 loaderName 的参数表示MBean的ObjectName,该对象表示可以对操作进行类加载的类加载器。这将是一个具有管理接口的类加载器,该接口允许将其注册为MBean。这可以是自定义包装的类加载器,也可以是JRE包含的MLet

答案 1 :(得分:0)

MbeanServerConnection具有用于createMBean的方法。

示例:

final MBeanServerConnection conn = jmxConnector.getMBeanServerConnection();
String domain = beanConn.getDefaultDomain();
            
String className = "com.example.mbean.SampleClass";
ObjectName name = new ObjectName(domain + ":name=" + className);
beanConn.createMBean(className, name);