2012-09-06 167 views
0

我知道我可以在SimpleData中具有SimpleType.INTEGER,SimpleType.STRING等SimpleType值。但我想知道如何將CompositeData的另一個實例複製到CompositeData中。 E.摹:無法創建嵌套的javax.management.openmbean.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

回答

1

值I_DONT_KNOW_WHAT_TO_PUT_HERE類型,但在代碼行4構造函數的第二個參數應該有字符串「compItem1」,而不是‘compData’,因爲這代表了你的第三個參數定義的代碼行4

下面是完整的代碼,項目名稱:

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

你有沒有考慮過使用MXBeans?除非您真的需要所有額外的元數據,否則這是一種更簡單(並且可維護)的方式,用於公開JMX中的複雜屬性。

+0

非常感謝,幫助!還有一個問題,在代碼中我可以做些什麼來擺脫警告(我認爲這是在嵌套CompositeData時出現的): 注意:com/example/MyMBean.java使用未經檢查或不安全的操作。 注意:使用-Xlint重新編譯:取消選中以獲取詳細信息。 – dimir

+0

是的,我考慮過MXBeans,但對於我的特殊情況,我需要明確地使用MBeans。 – dimir

+1

不確定。我沒有收到編譯器警告。哪個javac版本?你能追加輸出嗎? – Nicholas