How to access dynamicmbeans from a jmx client

馋奶兔 提交于 2019-12-08 05:34:01

问题


I am writing some test cases for the JMX interface in our product. I can access attributes from standard MBeans (following sun tutorial). However, I don't seem to be able to access dynamic MBeans. The attributes are fully (readable/writable) from JConsole.

JMXConnector jmxc = getJMXConnector();  // Takes care of our connection
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

ObjectName mbeanName = new ObjectName("com.xyz.prodname:type=LogManager");

// Up to this point, the logic is the same as the working logic.  In our working logic,
// DynamicMBean is replace with our MBean interface class.
DynamicMBean mbean = (DynamicMBean)JMX.newMBeanProxy(mbsc, mbeanName, DynamicMBean.class);
Object o = mbean.getAttribute("AttributeNameAsItAppearsInJConsole"); 

o should be a Boolean, but it is null. No exceptions are thrown.

I have also tried a few other permutations on the attribute name, but I believe it should be the simple name as I've defined it in the implementation class.


回答1:


I've found that you can get to dynamic MBean attributes directly through the MBeanServerConnection object:

JMXConnector jmxc = getJMXConnector();  // Takes care of our connection
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

ObjectName mbeanName = new ObjectName("com.xyz.prodname:type=LogManager");

// This change demonstrates what must be done
Object result = mbsc.getAttribute(mbeanName, "AttributeNameAsItAppearsInJConsole");



回答2:


I should have reloaded the page before answering. I basically posted what the original submitter had discovered in the meantime. JMX.newMBeanProxy is useful if you have a Java interface describing the management interface of your MBean (the Standard MBean pattern), but if your MBean is dynamic then you don't need or want a proxy.



来源:https://stackoverflow.com/questions/1950016/how-to-access-dynamicmbeans-from-a-jmx-client

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!