Перечисление JMX MXBean, обрабатывающее ошибки преобразования
При использовании перечисления в качестве компонента значения Map в 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");
Исключение, которое я получаю в этой ситуации: (edit: с тех пор понял, что это исключение связано с тем, что tabularDataSupport ожидает Object[] в качестве ключевого параметра.)
Строка не может быть приведена к [Ljava.lang.Object;
Поэтому у меня возникает вопрос: насколько я понимаю, что типы enum должны неявно преобразовываться при использовании прокси-серверов JMX некорректно, или я что-то упускаю в плане извлечения информации?
Должен ли вызов прокси быть таким же, как вызов интерфейса, учитывая, что прокси должен представлять исходный интерфейс?
1 ответ
Проблема в том, что вы выбираете прокси-сервер MBean, а не прокси-сервер MXBean.
Попробуйте использовать
MyMXBean proxy = JMX.newMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), new ObjectName("MyMXBeanObjectName"), MyMXBean.class);