2017-04-17 7 views
-1

rmi 응용 프로그램을 만들려고합니다. 클라이언트 전송 파일을 서버에 보내려고합니다. 하지만 코드를 실행할 때 보안 관리자 예외가 발생합니다.java.security.AccessControlException을 해결하는 방법

import java.rmi.Naming; 
    import java.rmi.RMISecurityManager; 
    import java.util.Scanner; 
    public class StartFileClient { 
    public static void main(String[] args) { 
    if (System.getSecurityManager() == null) 
     System.setSecurityManager(new RMISecurityManager()); 
    try{ 
     FileClient c=new FileClient("imed");    
     FileServerInt server=(FileServerInt)Naming.lookup("rmi://localhost/abc"); 
     server.login(c); 
     System.out.println("Listening.....");   
     Scanner s=new Scanner(System.in);   
     while(true){ 
      String line=s.nextLine(); 
     } 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

} 여기

서버 측이다 : 여기서 클라이언트 쪽

import java.rmi.Naming; 
public class StartFileServer { 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    try{ 

     java.rmi.registry.LocateRegistry.createRegistry(1099); 

     FileServer fs=new FileServer(); 
     fs.setFile("itcrowd.avi");   
     Naming.rebind("rmi://localhost/abc", fs); 
     System.out.println("File Server is Ready"); 

    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

} 또한

, 난 파일 security.policy를 생성

grant { 
     permission java.security.AllPermission; 

};

도와 주셔서 감사합니다.

답변

1

분명히 정책 파일을 찾을 수 없습니다. java.security.policy 시스템 속성을 통해 위치를 지정해야합니다.

그러나 코드베이스 기능을 사용하지 않는 경우 보안 관리자를 제거하십시오.

+0

정책 파일을 내 폴더 패키지에 넣습니다. –

+0

나는 그것을 제거합니다. 하지만 같은 오류가 발생합니다 : 액세스가 거부되었습니다 ("java.net.SocketPermission" "127.0.0.1:1099" "connect, resolve"). –

+0

정책 파일을 '폴더 패키지'에 넣으면 특히 아무 것도 달성하지 못합니다 , 그리고 어느 쪽도 그것을 제거하지 않을 것이다. 당신은 내 대답을 실제로 읽은 것 같지 않습니다. – EJP