- ベストアンサー
異なるOS間でRMIは利用できる?
UNIX上にRemoteオブジェクトを作成しリモートサーバとし、windowsPCをリモートクライアントとして通信をとりたいのですがうまくいきません。異なるOS間ではたとえネットワークが確立していて、互いにRMIの手続きをとっていてもRMIは利用できないのでしょうか?それとも何か特別な設定が必要なのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以前Windows2000とRedhatLinuxでRMIの実験したときはうまくいきました. # 2000がクライアント,linuxがサーバーでした 問題の具体的な内容を記述されると,もう少し詳しい原因が掴めるのではないかと思いますが,どうでしょう. 何か例外がスローされるようですか?
その他の回答 (3)
- rampil
- ベストアンサー率100% (2/2)
grant { permission java.security.AllPermission; }; という内容のテキストファイルを作成して(仮にjava.policyとします), java -Djava.security.policy=java.policy <クラス名> としてください. サーバーもクライアントも同様にして起動してみてください.
補足
ありがとうございます。動きました^^ policyのファイルを指定する際は相対pathでかまわないのでしょうか?(相対pathで実際動いたんで、いいんでしょうね) ところで、もし、Remoteサーバの呼び出しもとが、今回のようなコマンドプロンプトから起動するアプリケーションではない場合(たとえばAppletなど)はpolicyをどのようにして反映してあげればいいのでしょうか?
- rampil
- ベストアンサー率100% (2/2)
ひとまず, grant { permission java.security.AllPermission; }; というようなpolicyでサーバーもクライアントも起動してみてはいかがでしょうか. ちなみにクライアントはappletですか,それとも普通(?)のjavaアプリケーションでしょうか? セキュリティポリシーの問題である可能性が高いような気がします.
補足
クライアントは勉強用に作成した単純なJAVAアプリケーションです。 内容は、リモートサーバ上で起動しているREMOTEサービスにユーザ名登録を依頼し、返答(登録完了)を待つというものです。 ところで、『policyで起動』とはどのように使うものなのでしょうか?grant{}をプログラムに組み込めばいいのですか?
- mi-si
- ベストアンサー率35% (200/567)
Windows上でアプレットを動作させてそこからLinuxサーバー上のRMIをコールすると言うプログラムを書いたことがありますが特に問題なく動きました。 rmiregistryとRMIサーバーがちゃんと起動しているか?portはあっているか?サーバーOS上でportがブロックもしくは他のアプリケーションで使われていないか?セキュリティエラーが出ていないか?その辺りを調べてみる必要があるかもしれません。
補足
以下の例外がスローされてます。 ソケットのパーミッションが許されていないようなのですが、Remoteサーバ側で、他のクライアントからのソケット利用要求があった場合にそれを許可するような設定をしなければいけないんですかね? でも、どうやればいいんでしょう? ちなみにRemoteサーバ側のOSはAIX4.3.3で、Remoteクライアント側はWindows2000です。 java.security.AccessControlException: access denied (java.net.SocketPermission host001 resolve) (java.net.SocketPermission host001 resolve)