2017-07-19 161 views
1

我得到远程JVM一个ThreadMXBean的代理作为意外的行为()

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


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

然而,当我打电话下面,它说,它不能转换从CompositeDataSupportThreadInfo

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

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

回答

1

ThreadMXBean是一个MXBean。你的代码叫做JMX#newMBeanProxy。此方法返回的代理不能处理MXBeans的属性。而是使用JMX#newMXBeanFactory来获取能够处理MXBeans属性的代理。

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