#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?