来自JMX.newMBeanProxy()的意外行为

时间:2017-07-19 20:20:29

标签: java jmx mbeans mxbean

我将远程JVM的ThreadMXBean代理作为

 ObjectName objName = ManagementFactory.getThreadMXBean().getObjectName() ;


  ThreadMXBean proxy = JMX.newMBeanProxy(MBeanServerConnection, objName, ThreadMXBean.class);

但是,当我拨打以下电话时,它表示无法从CompositeDataSupport转换为ThreadInfo

 ThreadInfo tInfo = proxy. getThreadInfo(true, true);

代理人不应该负责所有的转换吗?此外,我正在有效地调用getThreadInfo() ThreadMXBean。

1 个答案:

答案 0 :(得分:1)

ThreadMXBean是一个MXBean。您的代码已调用JMX#newMBeanProxy。此方法返回的代理无法处理MXBeans的属性。相反,使用JMX#newMXBeanFactory来获取能够处理MXBeans属性的代理。

ThreadMXBean proxy = JMX.newMXBeanProxy(MBeanServerConnection, objName, ThreadMXBean.class);