我编写了一个简单的计算两个数字之和的示例 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 中删除,我会得到与端口号 1099相同java.security.AccessControlException
,每次都是罪魁祸首。
我想知道是否有一种方法可以避免将破折号放在我的策略文件中以使我的 RMI 应用程序正常工作。
此外,如果它有帮助或很重要,我将分别在我的createRegistry()
和getRegistry()
服务器/客户端的方法中指定端口 1099。