Не удалось запустить jstatd на сервере Ubuntu

Я хочу настроить два сервера с запущенным jstatd, чтобы я мог отслеживать свои приложения на лету. Веб-сервер запущен и работает, но другой сервер всегда получает некоторые исключения, подобные этой.

Не удалось связать /JStatRemoteHost с реестром RMI java.rmi.ServerException: RemoteException произошло в потоке сервера; Вложенное исключение: java.rmi.UnmarshalException: ошибка, демарширующая аргументы; Вложенное исключение: java.lang.ClassNotFoundException: sun.jvmstat.monitor.remote.RemoteHost (нет диспетчера безопасности: загрузчик класса RMI отключен) в sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:419) в sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267) по адресу sun.rmi.transport.Transport$1.run(Transport.java:177) по адресу sun.rmi.transport.Transport$1.run(Transport.java:174) по адресу java.security.AccessController.doPrivileged(собственный метод) на sun.rmi.transport.Transport.serviceCall(Transport.java:173) на sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553) на солнце.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808) в sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667) в java.util.concurrent.ThreadPounExecutor ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) в java.lang.Thread.run(Thread.java:722) в sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273) в sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251) в sun.rmi.server.UnicastRef.invoke(UnicastRef.miistry.java: at3.RegistryImpl_Stub.rebind(Неизвестный источник) в java.rmi.Naming.rebind(Naming.java:177) в sun.tools.jstatd.Jstatd.bind(Jstatd.java:57) в sun.tools.jstatd.Jstatd.main(Jstatd.java:143) Причиной является: java.rmi.UnmarshalException: ошибка, демарширующая аргументы ошибки; Вложенное исключение: java.lang.ClassNotFoundException: sun.jvmstat.monitor.remote.RemoteHost (нет диспетчера безопасности: загрузчик класса RMI отключен) в sun.rmi.registry.RegistryImpl_Skel.dispatch(неизвестный источник) в sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:409) в sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267) в sun.rmi.transport.Transport $ 1.run (Transport.java:1mi) в sun. transport.Transport $ 1.run (Transport.java:174) в java.security.AccessController.doPrivileged(собственный метод) в sun.rmi.transport.Transport.serviceCall(Transport.java:173) в sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553) в sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run (TCPTransport: 667) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) в java.lang.Thread.run(Thread.java:722) Причина: java.lang.ClassNotFoundException: sun.jvmstat.monitor.remote.RemoteHost (нет менеджера безопасности: загрузчик классов RMI отключен) в sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:554) в java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:646) в java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:rmiser.java:rmiser.java:rmiser.java:3miser.java:3miser.java:rmiser.java:3miser.java:rmiser.java:rmiser.java:3miser.java:3miser.java:3miser.java:3miser.java:3miser..MarshalInputStream.resolveProxyClass(MarshalInputStream.java:263) в java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1556) в java.io.ObjectInputStream.readClassDesc(ObjectInputStream.javaject.OO.JObjectOOO.ObOOOOIOOOOOIOOOOIOOOOOIOOOOIOIOOOI ObjectInputStream.java:1769) в java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) в java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ... еще 13

Я уверен, что jstatd загрузил файл политики, содержимое которого

предоставить кодовую базу "file:${java.home}/../lib/tools.jar" {разрешение java.security.AllPermission; };

Я не могу понять, в чем проблема, пожалуйста, помогите.

1 ответ

У меня была такая же проблема, как и у вас.

Насколько я понял, исключение произошло на стороне реестра rmi, потому что не удалось найти класс sun.jvmstat.monitor.remote.RemoteHost, расположенный внутри tools.jar.

В моем случае решением было указать свойство java.rmi.server.codebase при запуске rmiregistry. После указания свойства codebase проблема исчезла. Пожалуйста, попробуйте запустить rmiregistry, используя следующую команду для Linux / Solaris:

rmiregistry -J-Djava.rmi.server.codebase = file: $ {java.home} /../ lib / tools.jar &

или для Windows (хотя я не проверял это полностью)

start rmiregistry -J-Djava.rmi.server.codebase = "% JAVA_HOME% /.. / lib / tools.jar"

Надеюсь, это поможет вам.

Другие вопросы по тегам