【发布时间】:2014-06-22 08:14:53
【问题描述】:
我有一个奇怪的错误:
我的代码:
System.setProperty("java.security.policy", "client.policy");
System.setProperty("java.rmi.server.codebase", Servicecodebase);
System.setSecurityManager(new RMISecurityManager());
Class<?> InterfaceMath = RMIClassLoader.loadClass("http://127.0.0.1/dis/service.jar", "Service.InterfaceMath");
Remote service = null;
service = Naming.lookup("rmi://127.0.0.1:1099/ok"); // Error Message here
Method getInformation = service.getClass().getDeclaredMethod("test", String.class);
String res = (String) getInformation.invoke(service);
System.out.println(" res : "+res);
我的文件client.policy:
grant {
permission java.security.AllPermission;
permission java.net.SocketPermission "localhost:1099", "connect, resolve";
permission java.net.SocketPermission "127.0.0.1:1099", "connect, resolve";
permission java.net.SocketPermission "localhost:80", "connect, resolve";
};
我的错误:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
我在运行配置中使用 Eclipse - VM Arguments -Djava.security.policy==client.policy 然后我启动 --- 在控制台上启动 rmiregistry。
这很奇怪,因为我已经配置了我的文件,我加载了我的界面,但我无法与我的 RMI 通信。服务器我不知道为什么会出现这个问题。
更新: 我的项目ClientRMI:
- 源代码
- (默认包)
- consumerTest.java
- client.policy
【问题讨论】:
标签: java security permissions classloader rmi