/ /スタブクラスをサーバーからクライアントにダウンロードする際の問題 - Java RMI - java、例外、権限、クライアント、rmi

サーバからクライアントへのStubクラスのダウンロードに関する問題 - Java RMI - Java、例外、権限、クライアント、rmi

HelloWorldの実行に問題がありますJava RMIアプリケーション あるコンピュータにはサーバ、リモートクラス、リモートインタフェースがあり、別のコンピュータにはクライアント、リモートインタフェースがあります。サーバーとレジストリは正常に動作します。クライアントを実行しようとすると、このエラーが表示されます。

Client1例外:java.rmi.UnmarshalException:エラーの整列化解除エラー。ネストした例外は次のとおりです。 java.lang.ClassNotFoundException:Remote_Stub(セキュリティマネージャなし:RMIクラスローダが無効)

クライアントと同じディレクトリにRemote_Stub.classファイルがあれば、すべてうまくいくことに気づきました。だから私は私の問題はサーバーからクライアントにスタブをダウンロードしていることを考え出した。

なぜこれが私にこれを与えているのかよくわかりませんエラーかどうかは関係ありませんが、何らかの調査を行った後、あるコンピュータから別のコンピュータにファイルをダウンロードする権限がないため、セキュリティと関係があると思います(「セキュリティマネージャがない」と表示されているため)。誰もが私がこの問題を解決することができる方法を知っていますか?またはどのように私は許可を設定することができますか?

ありがとうございます。 マイケル

回答:

回答№1は0

サーバーはセキュリティポリシーを設定する必要があります。次のようなJVMプロパティが必要です。

-Djava.security.policy=/path/to/myserver.policy

myserver.policyは、サーバーのセキュリティポリシーを含むファイルです。次に例を示します。

grant {
permission java.security.AllPermission "", "";
};

関連するメモで、私は個人的に大ファンではありませんこれは、サーバーとクライアントの間のクラスバージョン管理を扱う方法と、Javaに固有のものであるため、クライアントがJavaで記述されることに制限されていることを過去に示しています。別のクライアントサーバー技術を選択する柔軟性がある場合は、SOAP(AXIS2は悪くない)またはRESTサービス(Restletはかなり有望に見える)を見てください。この記事は賛否両論を手助けするかもしれません:

http://michaeldehaan.net/2008/07/17/xmlrpc-vs-rest-vs-soap-vs-all-your-rpc-options/


回答№2の場合は0

http://download.oracle.com/javase/tutorial/rmi/client.html

それを見てください。スタブが確実にダウンロードされるようにするための最初のステップとして、クライアントにSecurityManagerをインスタンス化する方法を明確に説明しています。


回答№3の場合は0

JDK 1.5からスタブはまったく必要ありません。UnicastRemoteObjectのJavadocクラスを参照してください。