java:RMI注册表设置

java:RMI注册表设置,java,rmi,rmiregistry,Java,Rmi,Rmiregistry,因此,我使用的是LocateRegistry.createRegistry(),但这有一个问题:即,它在调用它的进程中运行,因此如果我使用的是多个JVM,那么启动注册表的JVM崩溃将导致所有JVM的注册表崩溃 因此,看起来我需要使用rmiregistry(或其他什么?)将执行RMI查找/绑定的进程与服务器JVM隔离开来 我尝试过这样做,现在当我尝试执行Registry.rebind()时出现此错误: 我做错了什么?我在谷歌上搜索了这个例外&它与RMI代码库有关,但我在这里真的迷路了。如果问题出在

因此,我使用的是
LocateRegistry.createRegistry()
,但这有一个问题:即,它在调用它的进程中运行,因此如果我使用的是多个JVM,那么启动注册表的JVM崩溃将导致所有JVM的注册表崩溃

因此,看起来我需要使用rmiregistry(或其他什么?)将执行RMI查找/绑定的进程与服务器JVM隔离开来

我尝试过这样做,现在当我尝试执行
Registry.rebind()
时出现此错误:


我做错了什么?我在谷歌上搜索了这个例外&它与RMI代码库有关,但我在这里真的迷路了。如果问题出在
rmiregistry
命令中,有哪些命令行选项可以告诉它该做什么?如果问题出现在我的服务器JVM中,我需要做什么?

什么崩溃?我已经多年没有看到JVM崩溃了。除非您有JNI,否则包含RMI服务器的JVM不会比由rmiregistry命令启动的独立JVM更容易崩溃。使用LocateRegistry.createRegistry()可以永远解决类路径问题。

什么崩溃?我已经多年没有看到JVM崩溃了。除非您有JNI,否则包含RMI服务器的JVM不会比由rmiregistry命令启动的独立JVM更容易崩溃。使用LocateRegistry.createRegistry()可以永远解决类路径问题。

我的JVM总是崩溃,因为它们使用的RxTx有很多本机代码问题。所以我需要在一个单独的过程中隔离它们。无论如何,这不是我的问题。“使用LocaterRegistry.createRegistry()永远解决你的类路径问题。”--你能详细说明一下吗?@Jason S:你有一个ClassNotFoundException,因为注册表找不到名为的类,因为它不在它的类路径上,但如果注册表在同一个JVM中,它就在类路径上,与远程对象相同,以及JVM中的所有其他内容,所以您不会得到这个错误,正如您已经发现的那样。我的JVM总是崩溃,因为它们使用RxTx,这有很多本机代码问题。所以我需要在一个单独的过程中隔离它们。无论如何,这不是我的问题。“使用LocaterRegistry.createRegistry()永远解决你的类路径问题。”--你能详细说明一下吗?@Jason S:你有一个ClassNotFoundException,因为注册表找不到名为的类,因为它不在它的类路径上,但如果注册表在同一个JVM中,它就在类路径上,与远程对象相同,以及JVM中的所有其他内容,这样您就不会出现错误,正如您已经发现的那样。
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)