単純に 2 つの数値の合計を計算するサンプル RMI アプリケーションを作成しました。
私のserver.policyは次のようになります:
grant {
permission java.net.SocketPermission "123.4.567.890:1024-", "accept, resolve";
};
そして私のclient.policyは次のようになります:
grant codeBase "file:/C:/Users/user/Documents/My_Workspace/Project/RMI/-" {
permission java.net.SocketPermission "123.4.567.890:1024-", "connect, resolve";
};
ポリシー ファイルの構文に関するドキュメントを読み、ポート番号の後にダッシュを付けると、「このポート番号以上」を意味することを知りました。ポートについてはよくわかりませんが、server.policy からダッシュを除外すると、java.security.AccessControlException
ランダムなポート番号 (50,000 から 65,000 の間のように見えます) が得られますが、client.policy からダッシュを除外すると、java.security.AccessControlException
ポート番号1099が毎回犯人であるのと同じです。
RMI アプリケーションを正しく動作させるために、ポリシー ファイルにダッシュを入れなくても済むようにする方法があるかどうか疑問に思っています。
また、それが役立つ場合、または問題がある場合は、サーバー/クライアントでそれぞれ ポート1099createRegistry()
とメソッドを指定しています。getRegistry()