我是 Java 中的 RMI 主题新手,我想使用 RMI 创建客户端服务器应用程序,
我按照此链接中找到的教程进行操作:RMI Tutorial using eclipse
但是我正在使用netbeans,这是服务器代码:
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.*;
public class AdditionServer {
public static void main (String[] argv) {
try {
if (System.getSecurityManager() == null)
{
System.setSecurityManager(new SecurityManager());
}
String policy="file:/home/user/NetBeansProjects/RMIServerSide/security.policy";
System.setProperty("java.security.policy",policy);
Addition Hello = new Addition();
System.out.println("test\n");
Registry reg=LocateRegistry.createRegistry(1099);
reg.rebind("rmi://localhost/ABC", Hello);
System.out.println("Addition Server is ready.");
}catch (Exception e) {
System.out.println("Addition Server failed: " + e);
}
}
}
这里是 security.policy :
grant codeBase "/home/user/NetBeansProjects/RMIServerSide/build/classes/" {
permission java.security.AllPermission;
};
然后我在终端中运行 rmiregistry & 。 然后我运行服务器,这里的输出到底是什么:
Addition Server failed: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.security.policy" "write")
有什么我想念的吗,比如虚拟机的配置之类的???.....
最佳答案
我也遇到了同样的问题。我已按照以下步骤修复了该问题:
- 我创建了一个策略文件,将其命名为
security.policy
包含以下内容
grant {
// Allow everything for now
permission java.security.AllPermission;
};
2- 在将远程对象绑定(bind)到 rmiregistry
之前添加以下代码行。
System.setProperty("java.security.policy","file:./security.policy");
关于java - rmi java.security.policy 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27096163/