我获得了用于远程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);