2011-09-07 40 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);