20.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 20.6: 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 MBeans, die von der JVM eingetragen wurden, sind als String-Konstanten in ManagementFactory aufgeführt und erklärt.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.