我获得了用于远程JVM的ThreadMXBean代理,

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


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


但是,当我调用以下命令时,它说它不能从CompositeDataSupport转换为ThreadInfo

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


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

最佳答案

ThreadMXBean是MXBean。您的代码已调用JMX#newMBeanProxy。此方法返回的代理无法处理MXBean的属性。而是使用JMX#newMXBeanFactory获得能够处理MXBeans属性的代理。

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

07-27 15:09