这就是我如何访问ServerInfo MBean。我使用的是JBoss AS 5.1,但这种方法应该是一样的。
要使用MBeanServer
实例调用listThreadDump()
,您可以使用invoke()
上的ServerInfo
MBean方法。
此外,您可以使用相同的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
}
最后,我觉得很方便,当MBean公开的“实例”属性,这样,那么你可以直接访问对象(CastToType) server.getAttribute(name, "instance")
,而不是总是通过的MBeanServer去。例如,当使用JMS时,ServerPeer实例很有用,因为您可以在队列和主题订户上获得消息计数器。