所以我使用了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中,我需要做什么?
发布于 2011-04-15 23:44:53
什么撞车?我已经好几年没见过JVM崩溃了。除非您有JNI,否则包含RMI服务器的JVM不会比由rmiregistry命令启动的独立JVM更容易崩溃。使用LocateRegistry.createRegistry()永远解决类路径问题。
https://stackoverflow.com/questions/5682556
复制相似问题