RMI 응용 프로그램을 빌드 중이며 다음 서버 클래스가 있습니다. 그러나, 내가 이클립스에서 실행할 때 다음 예외가 발생합니다. 무엇이 잘못되었으며 어떻게 해결할 수 있습니까? 비슷한 문제에 대해 온라인에서 2 일간 읽은 적이 있지만 해결책을 찾지 못했습니다. 나는 이것이 정책 파일과 관련이 있다고 생각하지만, 어떻게 사용하는지는 모른다. 또한 문제가 내가 실행하는 방식에 있다면 당신은 제게 일식으로 그렇게하기위한 지시를 주실 수 있습니까?RMI 서버 java.security.AccessControlException : 액세스가 거부되었습니다.
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import javax.rmi.ssl.SslRMIClientSocketFactory;
import javax.rmi.ssl.SslRMIServerSocketFactory;
public class MyServer extends UnicastRemoteObject implements Interface {
private static final int PORT = 2019;
public MyServer() throws Exception {
super(PORT, new SslRMIClientSocketFactory(), new SslRMIServerSocketFactory());
}
public static void main(String args[]) {
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
Registry registry = LocateRegistry.createRegistry(PORT, new SslRMIClientSocketFactory(), new SslRMIServerSocketFactory());
MyServer obj = new MyServer();
registry.bind("HelloServer", obj);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
@Override
public void sayHello() throws RemoteException {
System.out.println("Hello");
}
}
-
access denied ("java.net.SocketPermission" "localhost:2019" "listen,resolve")
java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:2019" "listen,resolve")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkListen(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at javax.rmi.ssl.SslRMIServerSocketFactory$1.<init>(Unknown Source)
at javax.rmi.ssl.SslRMIServerSocketFactory.createServerSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.listen(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.exportObject(Unknown Source)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(Unknown Source)
at sun.rmi.transport.LiveRef.exportObject(Unknown Source)
at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
at sun.rmi.registry.RegistryImpl.setup(Unknown Source)
at sun.rmi.registry.RegistryImpl.<init>(Unknown Source)
at sun.rmi.registry.RegistryImpl.<init>(Unknown Source)
at java.rmi.registry.LocateRegistry.createRegistry(Unknown Source)
at MyServer.main(MyServer.java:27)