2013-06-30 59 views
1

我想要设置运行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) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267) at sun.rmi.transport.Transport $ 1.run(Transport.java:177)at sun.rmi.transport.Transport $ 1.run (Transport.java:174)处 sun.rmi.transport.tcp.TCPTransport java.security.AccessController.doPrivileged(本机方法)在 sun.rmi.transport.Transport.serviceCall(Transport.java:173)。 handleMessages(TCPTransport.java:553) at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:808) 在 sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java: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)在 sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273) 在 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251) 在sun.rmi.server.UnicastRef.invoke(UnicastRef .java:377)在 sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)at java.rmi.Naming.rebind(Naming.java:177)at sun.tools.jstatd.Jstatd.bind(Jstatd.java:57)at sun.tools.jstatd.Jstatd.main(Jstatd.java:143)导致: java.rmi.UnmarshalException:错误解组参数;嵌套0​​例外是:抛出java.lang.ClassNotFoundException: sun.jvmstat.monitor.remote.RemoteHost(无安全管理器:RMI类加载器 禁用)在 sun.rmi.registry.RegistryImpl_Skel.dispatch(来源不明)在 太阳.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:409) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267) at sun.rmi.transport.Transport $ 1.run(Transport.java :177)at sun.rmi.transport.Transport $ 1.run(Transport.java:174)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.Transport.serviceCall(Transport.java :173)at sun.rmi.transport.tc p.TCPTransport.handleMessages(TCPTransport.java:553) 在 sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:808) 在 sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler。运行(TCPTransport.java: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:311) 在 sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:263) 在 java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1556) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1512) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769) 在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) 在java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ... 13多个

我肯定jstatd加载的策略文件内容

授予代码库 “文件:$ {java.home} /../的lib/tools.jar中”{许可 java.security.AllPermission; };

我无法确定问题来自何处,请帮助。

回答

5

我和你有同样的问题。

据我了解例外发生在RMI注册一面,因为它找不到类sun.jvmstat.monitor.remote.RemoteHost位于内的tools.jar

在我的情况下,解决办法是开始rmiregistry的时指定java.rmi.server.codebase财产。指定代码库属性后,问题消失了。 请尝试使用下面的命令为Linux/Solaris中启动rmiregistry中

rmiregistry的 -J-Djava.rmi.server.codebase =文件:$ {java.home} /../ LIB /tools.jar &

或适用于Windows(虽然我没有完全测试)

启动rmiregistry的 -J-Djava.rmi.server.codebase =“%JAVA_HOME%/。 ./li b/tools.jar“

希望它能帮助你。

+0

我现在正在点击'无法在1099处启动RMI命名服务' – DarVar

相关问题