JMX MXBean枚举处理转换错误

时间:2011-09-07 23:51:28

标签: java enums jmx mbeans

当使用枚举作为MXBean中Map的值组件时,看起来我很难转换枚举。

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 个答案:

答案 0 :(得分:1)

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

尝试使用

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