2017-07-19 198 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);