2011-07-09 2 views
0

HelloWorld Java RMIアプリケーションの実行に問題があります。 私はサーバ、リモートクラス、リモートインタフェースを一つのコンピュータに、クライアントとリモートインタフェースを別のコンピュータに持っています。サーバーとレジストリは正常に動作します。クライアントを実行しようとすると、次のエラーが表示されます。サーバからクライアントへのStubクラスのダウンロードに関する問題 - Java RMI

Client1例外:java.rmi.UnmarshalException:エラーをアンマーシャリングしています。 java.lang.ClassNotFoundException:Remote_Stub(セキュリティマネージャーなし:RMIクラスローダーが無効)

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

私はこのエラーをなぜ私に与えているのか分かりませんが、いくつかの調査をした後、私はセキュリティとは何かをしていると思います。 「セキュリティ管理者はいない」と言われています)そうであれば、どのようにしてこの問題を解決できるか知っていますか?どのように私は許可を設定することができますか?

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

答えて

0

サーバーでセキュリティポリシーを設定する必要があります。

myserver.policyは、例えば、サーバーのセキュリティポリシーを、持っているファイルである
-Djava.security.policy=/path/to/myserver.policy 

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

関連ノートで、私は個人的に巨大なファンではないあなたは次のようにJVMプロパティを必要としますRMIはサーバーとクライアント間のクラス・バージョニングとJava固有の事実を扱うため、過去に私の恩恵を受けていたため、クライアントをJavaで記述するように制限しています。別のクライアント/サーバー技術を選択する柔軟性がある場合は、SOAP(AXIS2は悪くない)またはRESTサービス(Restletはかなり有望です)を見てください。この投稿は、長所と短所のお手伝いをすることがあります。

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

+0

または、RMI/IIOPを参照してください。 – EJP

0

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

関連する問題