我们正在将应用程序从 JBoss 4.2.1 GA 迁移到 JBos EAP 7.0.0。应用程序审计 currentThreadsBusy,即线程数。这不适用于 EAP。
下面是代码片段
javax.management.MBeanServerConnection server = java.lang.management.ManagementFactory.getPlatformMBeanServer();
javax.management.QueryExp qe = javax.management.Query.finalSubString(javax.management.Query.attr("name"), javax.management.Query.value("-" + request.getLocalPort()));
System.out.println("qu = "+qe.toString());
Set<ObjectInstance> set = server.queryMBeans(new javax.management.ObjectName("jboss.web:type=ThreadPool,*"),qe);
System.out.println("Set = "+set);
String objectName = "";
for (ObjectInstance objectInstance : set) {
if (objectInstance.getObjectName().getCanonicalName().contains("=http")) {
objectName = objectInstance.getObjectName().getCanonicalName();
}
}
System.out.println("objectName = "+objectName);
Object object = server.getAttribute(new ObjectName(objectName),"currentThreadsBusy");
System.out.println("object "+object);
问题是返回的 Set 为 NULL。
问题可能是我们需要在 EAP 7 上启用 Web 线程监控,然后才能查询 mbean 服务。
在 jConsole 中我们也看不到 Web 线程组件。
任何指针或帮助在这里表示赞赏。