2012-05-12 2 views
1
나는이 오류가 계속 있기 때문에하는 RMIServer 클래스를 만드는 문제가 오전

: 액세스 거부 (낸다 java.net.SocketPermission는 127.0.0.1:1099는 연결, 해결)RMI 액세스 거부 오류 모든 시간

지금 내가 읽어을 구글은 새로운 정책 파일을 cerating에 대해 뭔가를하지만 정말 그렇게하는 방법을 이해하지 못해 누군가 나를 기쁘게 할 수 있습니까?

import java.rmi.Naming; 
import java.rmi.RemoteException; 
import java.rmi.RMISecurityManager; 
import java.rmi.server.UnicastRemoteObject; 
import java.rmi.registry.*; 
import java.security.Permission; 
import java.security.Security; 

public class RmiServer extends UnicastRemoteObject 
    implements RmiServerIntf 
    { 
    public static final String MESSAGE = "Hello world"; 

    public RmiServer() throws RemoteException 
    { 
    } 

    public String getMessage() 
    { 
     return MESSAGE; 
    } 


    public static void main(String args[]) 
    { 
     System.out.println("RMI server started"); 

     // Create and install a security manager 
     if (System.getSecurityManager() == null) 
     { 
      System.setSecurityManager(new RMISecurityManager()); 
      System.out.println("Security manager installed."); 
     } 
     else 
     { 
      System.out.println("Security manager already exists."); 
     } 

     try 
     { //special exception handler for registry creation 
      LocateRegistry.createRegistry(1099); 
      System.out.println("java RMI registry created."); 
     } 
     catch (RemoteException e) 
     { 
      //do nothing, error means registry already exists 
      System.out.println("java RMI registry already exists."); 
     } 

     try 
     { 
      //Instantiate RmiServer 
      RmiServer obj = new RmiServer(); 


      // Bind this object instance to the name "RmiServer" 
      Naming.rebind("//localhost/RmiServer", obj); 

      System.out.println("PeerServer bound in registry"); 
     } 
     catch (Exception e) 
     { 
      System.err.println("RMI server exception:" + e); 
      e.printStackTrace(); 
     } 
    } 

}  

답변

2

당신은 보안 관리자를 사용하는 (왜?)하지만 보안 정책이 당신에게 예외에 지정된 권한을 부여하지 않습니다

여기 내 서버 코드입니다. RMI 코드베이스 기능을 사용하지 않는 한, SecurityManager는 전혀 필요 없습니다. 그렇습니까.

+0

난 그냥 있는지 확인하는 것입니다 RMI..this에게 코드를 사용하여 자바에서 계산기를 쓰고을 내 서버가 작동 중입니다. 어떻게 해결해야한다고 생각하십니까? (내 계산기 코드가 준비되어 있고 RMI 만 사용하면됩니다.) – eran10

+0

@ user1364528 확실하게 해결하는 방법은 내 대답에 암시 적입니까? SecurityManager를 제거하거나 .policy 파일에 해당 권한을 추가하십시오. – EJP

+0

당신이 맞았 어 :) 고마워. :) – eran10