Java 如何使用getPlatformMXBean()方法获取寄存器MBean?
我已使用注册mbeanJava 如何使用getPlatformMXBean()方法获取寄存器MBean?,java,jmx,Java,Jmx,我已使用注册mbean ManagementFactory.getPlatformMBeanServer().registerMBean(mbean, name); 我可以在jconsole中看到这个mbean。我想通过ManagementFactory.getPlatformMXBean(mbean)获得它,但它抛出异常 mbean不是平台管理接口 我怎样才能得到这个注册bean 下面是代码 public void contextInitialized(ServletContextEvent
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)
请检查。请发布您的MBean的代码。@hbelmiro谢谢,我粘贴了我的代码。@NyxLuck我不是JMX人,但是否有可能registerMBean(MBean,name)`正在注册一个
MBean
,而不是方法名称所指示的MXBean
?另一方面,如果您想要获得MXBean
的name
属性,可以尝试ManagementFactory.getPlatformMBeanServer().getAttribute(新对象名(“common.test:type=MbeanTestImplement”),“name”)
@madhusudanareddysunapu感谢您的关注。MXBean只是一种特殊的MBean。