我已经使用注册了mbean
ManagementFactory.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;
}
}
您无法获得MBean实例。但是您可以获取其属性并调用其方法。您也可以javax.management.ObjectInstance
使用以下方法:
ManagementFactory.getPlatformMBeanServer().getObjectInstance(name)
请检查此答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句