2008-11-07 2 views
5

Я использую JMX для сохранения некоторой диагностической информации из удаленного процесса. Глядя на интерфейс в jconsole, показано, что тип возврата - CompositeData (данные фактически возвращаются как CompositeDataSupport). Я хочу вывести все пары ключ/значение, связанные с этим объектом.У CompositeData нет метода keys()?

Проблема заключается в том, что интерфейс, похоже, имеет метод «values ​​()», не имея возможности получить ключи. Я что-то упустил? Есть ли другой способ подойти к этой задаче?

Спасибо!

ответ

2

Вы можете найти более полный пример с этим small program that prints the attributes of all JVM MBeans

В частности:

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

Часть:

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

является то, что вы после этого.

Смежные вопросы