7

JMXを使用して、リモートプロセスからの診断情報を保存しています。jconsoleでインターフェースを見ると、戻りタイプがCompositeDataであることがわかります(データは実際にはCompositeDataSupportとして返されます)。このオブジェクトに関連付けられているすべてのキーと値のペアを出力したいと思います。

問題は、インターフェイスに「values()」メソッドがあり、キーを取得する方法がないように見えることです。ここで何かが足りませんか?このタスクに取り組む他の方法はありますか?

ありがとう!

4

2 に答える 2

10

私が間違っていなければ、あなたはできるだろう

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

(cData が CompositeData オブジェクトである場合)

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

于 2008-11-07T06:48:34.873 に答える
2

すべてのJVMMBeanの属性を出力するこの小さなプログラムを使用して、より完全な例を見つけることができます。

特に:

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) [...];
}

あなたが求めているものであること。

于 2008-11-07T06:58:31.203 に答える