一个应用程序正在使用JBoss 4.2.2,我发现有必要调用listThreadDump()
,我希望它在ServerInfo
。
我在想我需要找到这个信息的jar是jboss-jmx.jar。
那么,我如何通过调用与http://localhost:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.system:type=ServerInfo&methodName=listThreadDump
类似的东西以编程方式复制所做的事情?
答案 0 :(得分:3)
这就是我访问ServerInfo MBean的方式。我正在使用JBoss AS 5.1,但这种方法应该是一样的。
要致电listThreadDump()
,您可以使用invoke()
实例ServerInfo
MBeanServer
MBean上的// imports
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.jboss.mx.util.MBeanServerLocator;
try {
MBeanServer server = MBeanServerLocator.locate();
ObjectName name = new ObjectName("jboss.system:type=ServerInfo");
// invoke the listThreadDump method and capture its output
String threadDumpHtml = (String) server.invoke(name, "listThreadDump", null, null);
// access a simple attribute of the ServerInfo object
String jvmName = (String) server.getAttribute(name, "JavaVMName");
} catch (Exception e) {
// Ideally catch the 3 exact exceptions
}
方法。
此外,您可以使用相同的MBeanServer访问MBean的属性。
示例代码:
(CastToType) server.getAttribute(name, "instance")
最后,当MBeans公开'instance'属性时,我发现它很方便,因此您可以直接访问对象{{1}},而不是总是通过MBeanServer。例如,在使用JMS时,ServerPeer实例很不错,因为您可以在队列和主题订阅者上获取消息计数器。