2017-07-19 2 views
1

Ich erhalte eine ThreadMXBean Proxy für Remote-JVM alsunerwartetes Verhalten von JMX.newMBeanProxy()

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


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

Allerdings, wenn ich die folgenden nennen, sie sagt, es nicht CompositeDataSupport-ThreadInfo umwandeln kann.

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

Sollte sich der Proxy nicht um die Konvertierung kümmern? Außerdem rufe ich die getThreadInfo() auf effektiv ThreadMXBean an.

Antwort

1

ThreadMXBean ist ein MXBean. Ihr Code hat JMX#newMBeanProxy aufgerufen. Der von dieser Methode zurückgegebene Proxy kann die Eigenschaften von MXBeans nicht verarbeiten. Verwenden Sie stattdessen JMX#newMXBeanFactory, um einen Proxy zu erhalten, der die Eigenschaften von MXBeans verarbeiten kann.

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