CompositeData没有keys()方法?

时间:2008-11-07 04:47:06

标签: java jmx diagnostics jconsole

我正在使用JMX从远程进程保存一些诊断信息。查看jconsole中的接口显示返回类型为CompositeData(数据实际返回为CompositeDataSupport)。我想输出与此对象关联的所有键/值对。

问题是界面似乎只有一个“values()”方法,无法获取密钥。我在这里错过了什么吗?还有其他方法可以完成这项任务吗?

谢谢!

2 个答案:

答案 0 :(得分:9)

如果我没弄错的话,你可以做到

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

(假设cData是CompositeData对象)

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

答案 1 :(得分: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) [...];
}

成为你的目标。