25.5 Der 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:
class java.lang.management.ManagementFactory |
- 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-Werte-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 25.4 com/tutego/insel/jmx/MBeanServerDemo.java
package com.tutego.insel.jmx; import java.lang.management.ManagementFactory; import javax.management.*; public class MBeanServerDemo { public static void main( String[] args ) throws MalformedObjectNameException { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); 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:
18 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 von der JVM eingetragenen MBeans sind als String-Konstanten in ManagementFactory aufgeführt und erklärt.