2012-09-06 129 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