所以我在使用LocateRegistry.createRegistry()
,但这有一个问题:即它在调用它的进程中运行,所以如果我使用多个 JVM,那么启动注册表的 JVM 崩溃将取消所有注册表JVM。
所以看起来我需要使用 rmiregistry (或其他东西?)将执行 RMI 查找/绑定的进程与服务器 JVM 隔离开来。
我试图这样做,现在当我尝试这样做时出现此错误Registry.rebind()
:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: {my remote interface name}
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
我究竟做错了什么?我用谷歌搜索了这个异常,它与 RMI 代码库有关,但我真的迷路了。如果问题出在rmiregistry
命令中,有哪些命令行选项可以告诉它该做什么?如果问题出在我的服务器 JVM 中,我需要做什么?