Java RMI/访问被拒绝
Java RMI / access denied
我正在尝试创建一个 RMI 服务器,但在运行时出现以下异常:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:4555" "listen,resolve")
我已阅读有关策略文件的 Oracle 教程,这是我插入到 src 文件夹中的 server.policy 文件的内容:
grant codeBase "file:///C:/EclipseProjects/MultiServiceServer/src"{
permission java.security.AllPermission;
};
我还将 VM 参数设置为:
-Djava.security.policy=src/server.policy
最后,这是这个简单的 RMI 服务器的代码:
public class Main {
public static void main(String[] args)
{
System.out.println("Server is running..");
if (System.getSecurityManager() == null) {
System.setSecurityManager(new SecurityManager());
}
try {
String name = "AvailableService";
AvailableService service = new ServiceList();
AvailableService stub = (AvailableService)UnicastRemoteObject.exportObject(service, 0);
LocateRegistry.createRegistry(4555);
Registry reg = LocateRegistry.getRegistry(4555);
reg.bind(name, stub);
System.out.println(name+" bound");
} catch(Exception e){e.printStackTrace();}
}
感谢您的帮助。
C:/EclipseProjects/MultiServiceServer/src
文件夹在运行时不会存在,并且在编译时不包含 .class 文件。因此,授予它任何权限都是徒劳的。除非使用代码库功能,否则根本不需要在 RMI 中使用安全管理器。你不是。所以删除安全管理器。
我正在尝试创建一个 RMI 服务器,但在运行时出现以下异常:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:4555" "listen,resolve")
我已阅读有关策略文件的 Oracle 教程,这是我插入到 src 文件夹中的 server.policy 文件的内容:
grant codeBase "file:///C:/EclipseProjects/MultiServiceServer/src"{
permission java.security.AllPermission;
};
我还将 VM 参数设置为:
-Djava.security.policy=src/server.policy
最后,这是这个简单的 RMI 服务器的代码:
public class Main {
public static void main(String[] args)
{
System.out.println("Server is running..");
if (System.getSecurityManager() == null) {
System.setSecurityManager(new SecurityManager());
}
try {
String name = "AvailableService";
AvailableService service = new ServiceList();
AvailableService stub = (AvailableService)UnicastRemoteObject.exportObject(service, 0);
LocateRegistry.createRegistry(4555);
Registry reg = LocateRegistry.getRegistry(4555);
reg.bind(name, stub);
System.out.println(name+" bound");
} catch(Exception e){e.printStackTrace();}
}
感谢您的帮助。
C:/EclipseProjects/MultiServiceServer/src
文件夹在运行时不会存在,并且在编译时不包含 .class 文件。因此,授予它任何权限都是徒劳的。除非使用代码库功能,否则根本不需要在 RMI 中使用安全管理器。你不是。所以删除安全管理器。