Как использовать adminClient.addNotificationListener в сценарии Jython?

Вот документация: http://publib.boulder.ibm.com/infocenter/wsdoc400/v6r0/index.jsp?topic=/com.ibm.websphere.iseries.doc/info/ae/ae/tjmx_develop.html

Проблема в том, что это не работает:

import javax.management.ObjectName as ObjectName

...
theNodeAgentName = "WebSphere:type=NodeAgent,node='app_node2',*"
test_node_name = adminClient.queryNames(ObjectName(theNodeAgentName), None)
print test_node_name
adminClient.addNotificationListener(ObjectName(theNodeAgentName),listener,None,None)

Экземпляр adminClient никогда не сможет найти агент узла Mbean. Любые идеи?

выход:

[WebSphere:name=NodeAgent,process=nodeagent,platform=common,node=app_node2,diagnosticProvider=true,version=8.5.5.3,type=NodeAgent,mbeanIdentifier=NodeAgent,cell=my_cell,spec=1.0]

javax.management.InstanceNotFoundException: javax.management.InstanceNotFoundException: не удалось найти WebSphere:type=NodeAgent,node='app_node2',*


person the_marcelo_r    schedule 06.10.2014    source источник


Ответы (2)


Использование уведомлений JMX в чистом wsadmin требует небольшого взлома Jython. Вы можете найти вдохновение (решение?) в библиотеке WDR (https://github.com/WDR/WDR/< /а>). Рабочий пример использования WDR описан здесь: http://wdr.github.io/WDR/reference/wdr.control.MBean.class.html.

person Marcin Płonka    schedule 07.10.2014

Я выяснил, что не так со скриптом (это была питонистская ошибка: "adminClient.queryNames" возвращает список!), я передавал список в первый параметр функции "addNotificationListener", фокус в том, чтобы запроситьИмена и получить первый элемент в списке, например:

the_node_agent_name = "WebSphere:type=NodeAgent,node=app_node2,*"
query_name = ObjectName(the_node_agent_name)
node_agent_names = adminClient.queryNames(query_name, None)
node_agent = ObjectName(str(node_agent_names[0]))
print node_agent    
adminClient.addNotificationListener(node_agent,listener,None,None)
person the_marcelo_r    schedule 07.10.2014