我编写了一个示例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";
};
我阅读了有关策略文件语法的文档,并了解到当您在端口号后添加短划线时,它意味着“此端口号更大”。我不太了解端口,但是,如果我把短信从服务器中删除。政策我得到java.security.AccessControlException
随机端口号(看似在50,000到65,000之间),但是,如果我把短信留在客户端.policy我每次都得到相同的java.security.AccessControlException
端口号1099是罪魁祸首。
我想知道是否有办法避免将破折号放在我的策略文件中以便让我的RMI应用程序正常工作。
此外,如果它有帮助或重要,我将分别在服务器/客户端的createRegistry()
和getRegistry()
方法中指定端口1099。
答案 0 :(得分:0)
有。如果:
所有远程对象将共享同一个端口,端口1099。
但为什么.policy文件中的破折号如此重要?