• ベストアンサー

異なるOS間でRMIは利用できる?

UNIX上にRemoteオブジェクトを作成しリモートサーバとし、windowsPCをリモートクライアントとして通信をとりたいのですがうまくいきません。異なるOS間ではたとえネットワークが確立していて、互いにRMIの手続きをとっていてもRMIは利用できないのでしょうか?それとも何か特別な設定が必要なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • rampil
  • ベストアンサー率100% (2/2)
回答No.1

以前Windows2000とRedhatLinuxでRMIの実験したときはうまくいきました. # 2000がクライアント,linuxがサーバーでした 問題の具体的な内容を記述されると,もう少し詳しい原因が掴めるのではないかと思いますが,どうでしょう. 何か例外がスローされるようですか?

renann
質問者

補足

以下の例外がスローされてます。 ソケットのパーミッションが許されていないようなのですが、Remoteサーバ側で、他のクライアントからのソケット利用要求があった場合にそれを許可するような設定をしなければいけないんですかね? でも、どうやればいいんでしょう? ちなみにRemoteサーバ側のOSはAIX4.3.3で、Remoteクライアント側はWindows2000です。 java.security.AccessControlException: access denied (java.net.SocketPermission host001 resolve) (java.net.SocketPermission host001 resolve)

その他の回答 (3)

  • rampil
  • ベストアンサー率100% (2/2)
回答No.4

grant { permission java.security.AllPermission; }; という内容のテキストファイルを作成して(仮にjava.policyとします), java -Djava.security.policy=java.policy <クラス名> としてください. サーバーもクライアントも同様にして起動してみてください.

renann
質問者

補足

ありがとうございます。動きました^^ policyのファイルを指定する際は相対pathでかまわないのでしょうか?(相対pathで実際動いたんで、いいんでしょうね) ところで、もし、Remoteサーバの呼び出しもとが、今回のようなコマンドプロンプトから起動するアプリケーションではない場合(たとえばAppletなど)はpolicyをどのようにして反映してあげればいいのでしょうか?

  • rampil
  • ベストアンサー率100% (2/2)
回答No.3

ひとまず, grant { permission java.security.AllPermission; }; というようなpolicyでサーバーもクライアントも起動してみてはいかがでしょうか. ちなみにクライアントはappletですか,それとも普通(?)のjavaアプリケーションでしょうか? セキュリティポリシーの問題である可能性が高いような気がします.

renann
質問者

補足

クライアントは勉強用に作成した単純なJAVAアプリケーションです。 内容は、リモートサーバ上で起動しているREMOTEサービスにユーザ名登録を依頼し、返答(登録完了)を待つというものです。 ところで、『policyで起動』とはどのように使うものなのでしょうか?grant{}をプログラムに組み込めばいいのですか?

  • mi-si
  • ベストアンサー率35% (200/567)
回答No.2

Windows上でアプレットを動作させてそこからLinuxサーバー上のRMIをコールすると言うプログラムを書いたことがありますが特に問題なく動きました。 rmiregistryとRMIサーバーがちゃんと起動しているか?portはあっているか?サーバーOS上でportがブロックもしくは他のアプリケーションで使われていないか?セキュリティエラーが出ていないか?その辺りを調べてみる必要があるかもしれません。

関連するQ&A