Как получить доступ к dynamicmbeans из клиента jmx - PullRequest
1 голос
/ 23 декабря 2009

Я пишу несколько тестов для интерфейса JMX в нашем продукте. Я могу получить доступ к атрибутам из стандартного MBeans (после sun tutorial ). Тем не менее, я не могу получить доступ к динамическим MBeans. Атрибуты полностью (доступны для чтения / записи) из 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 должно быть логическим, но оно равно нулю. Нет исключений.

Я также попробовал несколько других перестановок имени атрибута, но я считаю, что это должно быть простое имя, как я определил его в классе реализации.

Ответы [ 2 ]

3 голосов
/ 23 декабря 2009

Я обнаружил, что вы можете получить динамические атрибуты MBean напрямую через объект MBeanServerConnection:

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");
1 голос
/ 24 декабря 2009

Я должен был перезагрузить страницу, прежде чем ответить. Я в основном отправил то, что первоначальный автор обнаружил за это время. JMX.newMBeanProxy полезен, если у вас есть интерфейс Java, описывающий интерфейс управления вашего MBean (стандартный шаблон MBean), но если ваш MBean является динамическим, то вам не нужен или не нужен прокси.

...