Domanda

Sto usando JMX per salvare alcune informazioni diagnostiche da un processo remoto. Guardando l'interfaccia in jconsole mostra che il tipo restituito è CompositeData (i dati in realtà tornano come CompositeDataSupport ). Voglio produrre tutte le coppie chiave / valore associate a questo oggetto.

Il problema è che l'interfaccia sembra avere solo " valori () " metodo senza modo di ottenere le chiavi. Mi sto perdendo qualcosa qui? C'è un altro modo di affrontare questo compito?

Grazie!

È stato utile?

Soluzione

Se non sbaglio potresti farlo

Set< String > keys = cData.getCompositeType().keySet();

(dato che cData è un oggetto CompositeData)

http: //java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/CompositeType.html#keySet ()

Altri suggerimenti

Puoi trovare un esempio più completo con questo piccolo programma che stampa gli attributi di tutti gli MBean JVM

In particolare:

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 parte:

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

essere ciò che stai cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top