首页 > 解决方案 > 用于线程挂起通知的 JMX 管理客户端

问题描述

我为挂起线程的通知创建了一个管理客户端实现。我已通过 Adminclient 成功连接到服务器。

adminClient = AdminClientFactory.createAdminClient(connectProps);

当我使用下面的查询来获取 Node 的 MBean 时,我能够在服务器启动或停止时获取通知。

String query = "WebSphere:type=NodeAgent,node=" + nodeName + ",*";

但我只是在寻找与挂起线程相关的通知,您能否建议我应该使用什么 MBean。

我已经尝试在下面获取 MBean。

String queryString = "WebSphere:type=ThreadPool,process="+nodeName+",name=WebContainer,*" ;
String queryString = "WebSphere:type=ThreadPool,process="+nodeName+",name=ThreadPool,*" ;
String queryString = "WebSphere:type=ThreadPool,process="+nodeName+",name=ORB.thread.pool,*" ;

但是我没有收到 JMX 通知,尽管我可以在 SysetemOut.log 中看到挂起线程错误存在。

 adminClient.addNotificationListener(nodeAgent, this, null, null);

我在上面使用了将通知绑定到 MBean。

标签: webspherethreadpooljmxhung

解决方案


服务器 MBean 产生挂起的线程事件 TYPE_THREAD_MONITOR_THREAD_HUNG 和 TYPE_THREAD_MONITOR_THREAD_CLEAR。将 MBean 查询修改为"WebSphere:type=Server,*",然后为客户端将为其处理挂起线程事件的每个服务器添加一个通知侦听器。现在应该启用客户端来处理挂起线程事件的通知。


推荐阅读