2008-11-07 9 views
5

Ich verwende JMX, um einige Diagnoseinformationen von einem Remote-Prozess zu speichern. Ein Blick auf die Schnittstelle in jconsole zeigt, dass der Rückgabetyp CompositeData ist (die Daten kommen tatsächlich als CompositeDataSupport zurück). Ich möchte alle Schlüssel/Wert-Paare ausgeben, die mit diesem Objekt verknüpft sind.CompositeData hat keine keys() Methode?

Das Problem ist, dass die Schnittstelle scheint nur eine "values ​​()" -Methode ohne Möglichkeit, die Schlüssel zu erhalten. Fehle ich hier etwas? Gibt es eine andere Möglichkeit, sich dieser Aufgabe zu nähern?

Danke!

Antwort

2

Sie ein vollständigeres Beispiel mit diesem small program that prints the attributes of all JVM MBeans

finden

Insbesondere:

StringBuffer writeCompositeData(StringBuffer buffer, 
      String prefix, String name, CompositeData data) { 
     if (data == null) 
      return writeSimple(buffer,prefix,name,null,true); 
     writeSimple(buffer,prefix,name,"CompositeData("+ 
       data.getCompositeType().getTypeName()+")",true); 
     buffer.append(prefix).append("{").append("\n"); 
     final String fieldprefix = prefix + " "; 
     for (String key : data.getCompositeType().keySet()) { 
      write(buffer,fieldprefix,name+"."+key,data.get(key)); 
     } 
     buffer.append(prefix).append("}").append("\n"); 
     return buffer; 
    } 

Der Teil:

for (String key : data.getCompositeType().keySet()) { 
    [...] data.get(key) [...]; 
} 

zu sein, was Sie nach.