Итак, так. У меня есть война, развернутая с MBean, представленная через весенний MBeanExporter и аннотации. У меня развернулось еще одно военное приложение, в котором используется некоторый код для общения с mbean. У меня возникла проблема с вызовом функции на mbean из этого клиентского кода.аргумент типа несоответствие в mbeanServer.invoke
RuntimeException произошло в RequiredModelMBean при попытке вызвать операции getPermissions.
Подпись метода mbean представляет собой сборник 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.
RuntimeException не говорит вам много, типичный не тот! ;). Можете ли вы установить точку отладки? –
да, и если я изменил аргументы с обеих сторон на строку, он успешно вызвал метод и вернулся просто отлично, я думал, что это что-то связано с определенным весенним классом безопасности, поэтому я играл с этим, но не повезло так далеко. – gtrak
Выстрел в темноте (поскольку я не уверен, как Spring справляется с этим, и вы не показываете его в своем коде), но «роль» определяется как «GrantedAuthority» или «GrantedAuthorityImpl»? Весна, возможно, недостаточно проверяет, чтобы сказать, что они взаимозаменяемы. – Benn