1

我想设置两台运行 jstatd 的服务器,这样我就可以实时监控我的应用程序。Web 服务器已经启动并运行,但另一台服务器总是会出现这样的异常。

无法将 /JStatRemoteHost 绑定到 RMI 注册表 java.rmi.ServerException:RemoteException 在服务器线程中发生;嵌套异常是:java.rmi.UnmarshalException:错误解组参数;嵌套异常是: java.lang.ClassNotFoundException: sun.jvmstat.monitor.remote.RemoteHost (no security manager: RMI class loader disabled) at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:419) at 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(Native Method) 在 sun.rmi.transport.Transport.serviceCall(Transport.java:173) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java: java:143) 引起:java.rmi.UnmarshalException:解组参数错误;嵌套异常是:java.lang.ClassNotFoundException: sun.rmi.server 的 sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) 处的 sun.jvmstat.monitor.remote.RemoteHost(无安全管理器:禁用 RMI 类加载器)。 Sun.rmi.transport.Transport$1.run(Transport.java:177) 上 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267) 上的 UnicastServerRef.oldDispatch(UnicastServerRef.java:409) 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.tcp .TCPTransport.handleMessages(TCPTransport.java:553) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler。

我确定 jstatd 加载了内容是的策略文件

授予代码库 "file:${java.home}/../lib/tools.jar" { 权限 java.security.AllPermission; };

我无法弄清楚问题出在哪里,请帮忙。

4

1 回答 1

5

我和你有同样的问题。

据我了解,异常发生在rmi 注册表端,因为它找不到位于tools.jar内的类sun.jvmstat.monitor.remote.RemoteHost

在我的情况下,解决方案是在启动rmiregistry时指定java.rmi.server.codebase属性。指定代码库属性后,问题就消失了。对于 Linux/Solaris ,请尝试使用以下命令启动rmiregistry :

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

或者对于 Windows(虽然我没有完全测试它)

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

希望它会帮助你。

于 2013-07-26T21:32:20.303 回答