Websphere 如何使用;adminClient.addNotificationListener“;用Jython脚本?

Websphere 如何使用;adminClient.addNotificationListener“;用Jython脚本?,websphere,jython,wsadmin,Websphere,Jython,Wsadmin,以下是文档: 问题是这不起作用: 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.addN

以下是文档:

问题是这不起作用:

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'*


我发现了脚本的错误(这是一个Python错误:“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)

在纯wsadmin中使用JMX通知需要一些Jython黑客攻击。您可以在WDR库()中找到一些灵感(解决方案?)。此处记录了使用WDR的工作示例: