これが私がServerInfoMBeanにアクセスした方法です。JBoss AS 5.1を使用していますが、この方法は同じである必要があります。
を呼び出すには、インスタンスを使用してMBeanのメソッドをlistThreadDump()
実行できます。invoke()
ServerInfo
MBeanServer
さらに、同じ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が「instance」属性を公開するときに便利だと思います。そのため(CastToType) server.getAttribute(name, "instance")
、常にMBeanServerを経由するのではなく、オブジェクトに直接アクセスできます。たとえば、JMSを使用する場合、キューとトピックサブスクライバーでメッセージカウンターを取得できるため、ServerPeerインスタンスがあれば便利です。