Метод Weblogic JMX MBean имеет неправильную подпись При проксировании

#java #jmx #weblogic12c

Вопрос:

Я хочу получить доступ к ролям приложений EM в Weblogic (12.2.1.4) через некоторую Java, которая будет встроена в веб-приложение.

Я могу сделать это, используя invoke MBeanServer , но не когда я пытаюсь создать прокси-сервер.

В обеих ситуациях у меня есть

 InitialContext ctx = new InitialContext();
MBeanServer conn = (MbeanServer) ctx.lookup("java:comp/env/jmx/domainRuntime");
ObjectName appPolicy = new ObjectName("com.oracle.jps:type=JpsApplicationPolicyStore");
 

затем я могу вызвать метод, и это отлично работает

 CompositeData[] data = (CompositeData[]) conn.invoke(appPolicy, "getAllApplicationRoles",
                                                     new Object[] {appId}, 
                                                     new String[] {"java.lang.string"});
 

В других ситуациях, когда я могу получить прямой доступ к MBean (веб-приложение развернуто на том же управляемом сервере) Я использовал прокси-объект, но когда я пытаюсь

 JpsApplicationPolicyStoreMXBean jpsBean = JMX.newMBeanProxy(conn, appPolicy,
                                                           JpsApplicationPolicyStoreMXBean.class);
 

Я получаю боб обратно, но когда я смотрю на

 jpsBean.getAllApplicationRoles(appId);
 

он говорит мне, что возвращаемое значение представляет собой массив PortableApplicationRole , и оно отлично компилируется, но когда я запускаю его на сервере, я получаю ошибку, в которую оно не может CompositeData[] быть приведено PortableApplicationRole[]

Второй метод, очевидно, гораздо проще для чтения и успешно использовался в других приложениях (с различными MBEANS), поэтому я хотел бы использовать этот метод, если смогу.

Я создаю это на самом сервере, ссылаясь на банки, которые, по-видимому, использует сервер. Я делаю что-то не так или это проблема с Weblogic?