1

を使用していましたが、これには問題があります。つまり、それを呼び出すプロセス内で実行されるため、複数のJVMを使用している場合、レジストリを開始したJVMがクラッシュすると、すべてLocateRegistry.createRegistry()レジストリが停止します。 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に問題がある場合、何をする必要がありますか?

4

1 に答える 1

1

何がクラッシュしますか?私は何年もの間JVMのクラッシュを見ていません。JNIがない限り、RMIサーバーを含むJVMは、rmiregistryコマンドによって開始されたスタンドアロンJVMよりもクラッシュする可能性は高くありません。また、LocateRegistry.createRegistry()を使用すると、クラスパスの問題が永久に解決されます。

于 2011-04-15T23:44:53.830 に答える