2011-09-07 42 views
0

将枚举用作MXBean中Map的值组件时,看起来我在转换枚举时遇到了困难。JMX MXBean枚举处理转换错误

public enum MyEnum { 
    EnumVal1, EnumVal2, EnumVal3 
}; 

public interface MyMXBean { 
    Map<String,MyEnum> getEnumMap(); 
} 

MyMXBean proxy = JMX.newMBeanProxy(ManagementFactory.getPlatformMBeanServer(), new ObjectName("MyMXBeanObjectName"), MyMXBean.class); 
MyEnum retval = proxy.getEnumMap().get("key"); 

我在这种情况下,接收的例外是(编辑:已经因为意识到这个异常是由于事实tabularDataSupport期待一个Object []作为关键参数)

java.lang.String不能转换为[Ljava.lang.Object;

所以我的问题是,我的理解是,枚举类型应该隐式转换时,使用JMX代理不正确,或者我在提取信息方面缺少的东西?

代理调用是否应该与接口调用相同,因为代理应该表示原始接口?

回答

1

问题是您选择的是MBean代理而不是MXBean代理。

尝试使用

MyMXBean proxy = JMX.newMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), new ObjectName("MyMXBeanObjectName"), MyMXBean.class);