我使用
注册了mbeanManagementFactory.getPlatformMBeanServer().registerMBean(mbean, name);
我可以在jconsole中看到这个mbean。我希望通过ManagementFactory.getPlatformMXBean(mbean)
获取它,但它会抛出异常
mbean不是平台管理界面。
如何获得此注册bean?
以下是代码。
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("Registering MBean...");
try {
ObjectName name = new ObjectName("common.test:type=MbeanTestImplement");
MbeanTestInterface mbean = new MbeanTestImplement();
ManagementFactory.getPlatformMBeanServer().registerMBean(mbean, name);
MbeanTestImplement mxbean = ManagementFactory.getPlatformMXBean(MbeanTestImplement.class);
System.out.println(mxbean.getName());
} catch (Exception e){
e.printStackTrace();
}
//ManagementFactory.getMBeanserverConnection()
}
MbeanTestInterface扩展了PlatformManagedObject,MbeanTestImplement实现了MbeanTestInterface。
public interface MbeanTestInterface extends PlatformManagedObject {
public String getName();
}
public class MbeanTestImplement implements MbeanTestInterface {
@Override
public String getName() {
return MbeanTestImplement.class.toString();
}
@Override
public ObjectName getObjectName() {
return null;
}
}
答案 0 :(得分:0)
您无法获取MBean实例。但是你可以获得它的属性并调用它的方法。您还可以使用此方法获取javax.management.ObjectInstance
:
ManagementFactory.getPlatformMBeanServer().getObjectInstance(name)
请检查this answer。