19.5Der MBeanServer
Alle MBeans sind beim MBean-Server angemeldet. Java verwaltet selbstständig ohne Zutun von außen einen solchen Server, den wir über die ManagementFactory erfragen können:
static MBeanServer getPlatformMBeanServer()
Liefert den MBean-Server der Plattform.
Die dort eingetragenen MBeans haben einen Namen, der nicht direkt ein String ist, sondern ein Objekt vom Typ ObjectName. Der Name besteht aus zwei Teilen: dem Domänennamen und einer Liste von Properties, also Schlüssel-Wert-Paaren. In der String-Repräsentation sind die beiden Teile durch einen Doppelpunkt getrennt.
Das nächste Beispiel zeigt eine Suchanfrage nach allen eingetragenen MBeans:
Listing 19.6com/tutego/insel/jmx/MBeanServerDemo.java, main()
System.out.println( server.getMBeanCount() );
for ( Object object : server.queryMBeans(new ObjectName("*:*"), null) )
System.out.println( ((ObjectInstance)object).getObjectName() );
queryMBeans(…) sucht nach den MBeans mit dem gegebenen Muster. Wir haben hier ein Pattern übergeben, doch das erste Argument kann auch null sein. In beiden Fällen beginnt die Ausgabe mit:
java.lang:type=MemoryPool,name=Tenured Gen
java.lang:type=GarbageCollector,name=Copy
java.lang:type=Memory
JMImplementation:type=MBeanServerDelegate
java.lang:type=MemoryPool,name=Eden Space
java.lang:type=MemoryPool,name=Code Cache
java.util.logging:type=Logging
java.lang:type=Threading
java.lang:type=MemoryManager,name=CodeCacheManager
...
Die Namen der MBeans, die von der JVM eingetragen wurden, sind als String-Konstanten in ManagementFactory aufgeführt und erklärt.