0

CompositeDataにSimpleType.INTEGER、SimpleType.STRINGなどのSimpleType値を含めることができることはわかっています。しかし、CompositeDataの別のインスタンスをCompositeDataに取り込むにはどうすればよいのでしょうか。例:

CompositeType type = new CompositeType("My Type", "My Type", new String[]{"item1", "item2"}, new String[]{"item1", "item2"}, new OpenType[]{SimpleType.STRING, SimpleType.STRING});
CompositeData data = new CompositeDataSupport(type, new String[]{"item1", "item2"}, new String[]{"item value 1", "item value 2"});

CompositeType compType = new CompositeType("compData", "compData", new String[]{"compItem1"}, new String[]{"compItem1"}, new OpenType[]{I_DONT_KNOW_WHAT_TO_PUT_HERE});
CompositeData compData = new CompositeDataSupport(compType, new String[]{"compData"}, data);

上記の「I_DONT_KNOW_WHAT_TO_PUT_HERE」を参照してください。CompositeDataのOpenTypeを渡す方法がわかりませんでした。そして、CompositeDataからネストされたCompositeDataのインスタンスを再帰的に取得する例を見てきました。

いくつかの参考文献:

http://docs.oracle.com/javase/6/docs/api/javax/management/openmbean/CompositeData.html http://docs.oracle.com/javase/6/docs/api/javax/management/openmbean /CompositeType.html http://docs.oracle.com/javase/6/docs/api/javax/management/openmbean/OpenType.html

4

1 に答える 1

1

I_DONT_KNOW_WHAT_TO_PUT_HEREの値はタイプですが、コード行4のコンストラクターの2番目の引数には、コード行4の3番目のパラメーターで定義したアイテム名を表すため、 「 compData」ではなく「compItem1 」という文字列を指定する必要があります。

完全なコードは次のとおりです。

    CompositeType type = new CompositeType("My Type", "My Type", new String[]{"item1", "item2"}, new String[]{"item1", "item2"}, new OpenType[]{SimpleType.STRING, SimpleType.STRING});
    CompositeData data = new CompositeDataSupport(type, new String[]{"item1", "item2"}, new String[]{"item value 1", "item value 2"});

    CompositeType compType = new CompositeType("compData", "compData", new String[]{"compItem1"}, new String[]{"compItem1"}, new OpenType[]{type});
    CompositeData compData = new CompositeDataSupport(compType, new String[]{"compItem1"}, new Object[]{data});

MXBeanの使用を検討しましたか?追加のメタデータが本当に必要でない限り、JMXで複雑な属性を公開するためのはるかに簡単な(そして保守可能な)方法です。

于 2012-09-06T17:01:36.560 に答える