2008-11-07 6 views
5

J'utilise JMX pour enregistrer des informations de diagnostic à partir d'un processus distant. En regardant l'interface dans jconsole montre que le type de retour est CompositeData (les données reviennent effectivement comme CompositeDataSupport). Je veux afficher toutes les paires clé/valeur associées à cet objet. Le problème est que l'interface semble avoir une méthode "values ​​()" sans aucun moyen d'obtenir les clés. Est-ce que j'ai râté quelque chose? Y a-t-il un autre moyen d'aborder cette tâche?CompositeData n'a pas de méthode keys()?

Merci!

Répondre

2

Vous pouvez trouver un exemple plus complet avec ce small program that prints the attributes of all JVM MBeans

En particulier:

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; 
    } 

La partie:

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

être ce que vous recherchez.

Questions connexes