несоответствие типов аргументов в mbeanServer.invoke - PullRequest
1 голос
/ 05 ноября 2010

Хорошо, так. У меня развернута война с MBean, выставленной через весенний MBeanExporter и аннотации. У меня развернуто другое приложение войны, использующее некоторый код для связи с Mbean. У меня проблема с вызовом функции на mbean из этого клиентского кода.

Произошло исключение RuntimeException в RequiredModelMBean при попытке вызвать операцию getPermissions.

Сигнатурой метода mbean является Collection getPermissions (роль GrantedAuthority).

и код, который я использую для вызова, это

Object[] params = {role}; //role is passed in as a GrantedAuthorityImpl (implements GrantedAuthority)
String[] signature = {"org.springframework.security.core.authority.GrantedAuthority"};

mbeanServer.invoke(new ObjectName(mbeanName), "getPermissions", params, signature);

В чем может быть проблема, или на что мне смотреть?

javax.management.RuntimeOperationsException: RuntimeException occurred in RequiredModelMBean while trying to invoke operation getPermissions
 javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1080)
 javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955)
 org.springframework.jmx.export.SpringModelMBean.invoke(SpringModelMBean.java:90)
 org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
 org.jboss.mx.modelmbean.RequiredModelMBeanInvoker.invoke(RequiredModelMBeanInvoker.java:127)
 org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
 xxx.MBeanPermissionMapLookup.getPermissions(MBeanPermissionMapLookup.java:31)
 xxx.MBeanPermissionMapLookup$$FastClassByCGLIB$$667f3fad.invoke(<generated>) ...


root cause: java.lang.IllegalArgumentException: argument type mismatch
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)
    javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074)
    javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955)
    org.springframework.jmx.export.SpringModelMBean.invoke(SpringModelMBean.java:90)
    org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
    org.jboss.mx.modelmbean.RequiredModelMBeanInvoker.invoke(RequiredModelMBeanInvoker.java:127)
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
    xxx.MBeanPermissionMapLookup.getPermissions(MBeanPermissionMapLookup.java:31)

Использование Spring 3.0.4, Spring security 3.0.3, jboss 5.1.0, java jdk 1.6.0-17.

1 Ответ

0 голосов
/ 02 марта 2011

Рассматриваемые классы не могут пересекать границу загрузчика классов, это несоответствие типа аргумента, поскольку загрузчик классов внутренне является частью типа в jboss.

...