我对以下场景有一个疑问:我编写了一个客户端和一个服务器,它们共享两个公共(public)项目并与 RMI 通信,并且在我现在的阶段仅在本地运行。 在 server.policy 文件中我写道:
grant codeBase "file:C:/webui/client/bin/-" {
permission java.security.AllPermission;
};
grant codeBase "file:C:/webui/common1/bin/-" {
permission java.security.AllPermission;
};
grant codeBase "file:C:/webui/common2/bin/-" {
permission java.security.AllPermission;
};
对于我尝试过的客户 授予 codeBase "file:C:/webui/client/bin/-"{ 权限 java.security.AllPermission; };
grant codeBase "file:C:/webui/common1/bin/-" {
permission java.security.AllPermission;
};
grant codeBase "file:C:/webui/common2/bin/-" {
permission java.security.AllPermission;
};
grant codeBase "file:C:/webui/server/bin/-" {
permission java.security.AllPermission;
};
但我收到 AccessDenied 和神秘消息,例如 (org.osgi.framework.ServicePermission (service.id=37) get) 和 (fava.io.FilePermission C:\workspaces\webui.metadata.plugins\org.eclipse. pde.core\webui\1310480250513.log 读取)。 如果我在客户端授予所有内容,它就会起作用。
我不知道为什么,但可能我没有完全理解.policy文件的概念..;)
最佳答案
使用 -Djava.security.debug=access,failure 运行 JVM。输出将显示哪些安全域(即本质上是代码库)需要哪些权限。
关于java - 客户端策略文件的 RMI 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665690/