Java RMIは,ネットワークを介してオブジェクトのやりとりを行うため,セキュリティマ ネージャの作成・インストールが必要である. セキュリティマネージャはプログラムがセキュリティ上問題のあるような動作を行う際に, それが実際に問題がないかを確認し,セキュリティ上問題がある場合には例外を発生する.
RMIでは標準的なセキュリティマネージャとして RMISecurityManager
が用意され
ているのでこれを用いることができる.
RMISecurityManager
を用いるには,プログラムのmain()
メソッドにおいて
以下のように記述する.
これを行うと,プログラムは標準のセキュリティポリシーに従ってネットワークの接続を
行うことになる.
標準のセキュリティポリシーは Java のインストールされたディレクトリ下の
java.policy
ファイルによって指定されており,ネットワークの接続に関しては
permission java.net.SocketPermission "localhost:1024-", "listen";となっているが,これは「ローカルホストのポート番号1024以上へのソケット接続は listen(待機)のみ許可される」ということで,ほとんどの接続については許可されない. このため,RMIを用いる場合にはセキュリティポリシーを自分で設定する必要がある.