在远程进程上创建MBean时的ReflectionException:默认的装入器存储库

时间:2018-06-13 05:33:35

标签: java classloader jmx classnotfoundexception mbeans

我发现类似的问题并没有解决我的问题。 我创建了一个MBean接口及其Implementation类。我想在远程进程上创建这个MBean并调用它的方法。当我尝试mBeanServer.registerMBean(diskSpace, beanName);时,这适用于本地流程 但是当我在JMXConnector上使用MBeanServerConnection在远程服务器上创建相同内容时出错: - mBeanServerConnection.createMBean(CheckDiskSpace.class.getName(), beanName);

这是整个Stack Trace: -

  

线程中的异常" main" javax.management.ReflectionException:默认的加载器存储库无法加载MBean类       at com.sun.jmx.mbeanserver.MBeanInstantiator.findClassWithDefaultLoaderRepository(MBeanInstantiator.java:104)       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:268)       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:206)       at com.sun.jmx.mbeanserver.JmxMBeanServer.createMBean(JmxMBeanServer.java:326)       在javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1425)       在javax.management.remote.rmi.RMIConnectionImpl.access $ 300(RMIConnectionImpl.java:76)       at javax.management.remote.rmi.RMIConnectionImpl $ PrivilegedOperation.run(RMIConnectionImpl.java:1311)       在javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1403)       在javax.management.remote.rmi.RMIConnectionImpl.createMBean(RMIConnectionImpl.java:259)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)       在java.lang.reflect.Method.invoke(Method.java:497)       at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)       at sun.rmi.transport.Transport $ 1.run(Transport.java:200)       at sun.rmi.transport.Transport $ 1.run(Transport.java:197)       at java.security.AccessController.doPrivileged(Native Method)       at sun.rmi.transport.Transport.serviceCall(Transport.java:196)       at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:826)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $ run $ 79(TCPTransport.java:683)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler $$ Lambda $ 46 / 1217272183.run(Unknown Source)       at java.security.AccessController.doPrivileged(Native Method)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:682)       在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)       在java.lang.Thread.run(Thread.java:745)       at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283)       at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260)       at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)       at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)       在javax.management.remote.rmi.RMIConnectionImpl_Stub.createMBean(未知来源)       at javax.management.remote.rmi.RMIConnector $ RemoteMBeanServerConnection.createMBean(RMIConnector.java:651)       在com.walmart.healthcheck.diskspace.remote.JMXCheckDiskSpaceServer.jmxCheckDiskSpaceServer(JMXCheckDiskSpaceServer.java:34)       在com.walmart.healthcheck.diskspace.remote.RunJMX.main(RunJMX.java:18)   引起:java.lang.ClassNotFoundException:com.walmart.healthcheck.diskspace.CheckDiskSpace       at com.sun.jmx.mbeanserver.ClassLoaderRepositorySupport.loadClass(ClassLoaderRepositorySupport.java:232)       at com.sun.jmx.mbeanserver.ClassLoaderRepositorySupport.loadClass(ClassLoaderRepositorySupport.java:144)       at com.sun.jmx.mbeanserver.MBeanInstantiator.findClassWithDefaultLoaderRepository(MBeanInstantiator.java:101)       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:268)       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:206)       at com.sun.jmx.mbeanserver.JmxMBeanServer.createMBean(JmxMBeanServer.java:326)       在javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1425)       在javax.management.remote.rmi.RMIConnectionImpl.access $ 300(RMIConnectionImpl.java:76)       at javax.management.remote.rmi.RMIConnectionImpl $ PrivilegedOperation.run(RMIConnectionImpl.java:1311)       在javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1403)       在javax.management.remote.rmi.RMIConnectionImpl.createMBean(RMIConnectionImpl.java:259)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)       在java.lang.reflect.Method.invoke(Method.java:497)       at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)       at sun.rmi.transport.Transport $ 1.run(Transport.java:200)       at sun.rmi.transport.Transport $ 1.run(Transport.java:197)       at java.security.AccessController.doPrivileged(Native Method)       at sun.rmi.transport.Transport.serviceCall(Transport.java:196)       at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:826)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $ run $ 79(TCPTransport.java:683)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler $$ Lambda $ 46 / 1217272183.run(Unknown Source)       at java.security.AccessController.doPrivileged(Native Method)       at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:682)       在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)       在java.lang.Thread.run(Thread.java:745)

如何在远程进程上创建此MBean? 我已经尝试单独创建MBean类,并在我的类中包含jar文件。

0 个答案:

没有答案