java.security.AccessControlException: доступ запрещен, исключение - PullRequest
2 голосов
/ 27 апреля 2010

Я пытаюсь сделать простую программу для RMI. Но я получаю следующее исключение при запуске линии Naming.rebind ( "имя_интерфейс", Remoteserverobject);

java.security.AccessControlException: доступ закрыт (java.net.SocketPermission 127.0.0.1:1099 подключиться, разрешить)

Мой код выглядит следующим образом:

public static void main(String[] args) throws Exception {

        if(System.getSecurityManager()==null)
        {
            System.setSecurityManager(new RMISecurityManager());
        }
        Remoteserver objremoteserver=new Remoteserver();
        objremoteserver.setmsg("Hello! How are you?");
        System.out.println(objremoteserver.getmsg());
        try
        {
        Naming.rebind("Remotemethod", objremoteserver);
        System.out.println("Server Started");
        }
        catch(RemoteException re)
        {
            System.out.println(re.getLocalizedMessage());
        }
        finally
        {
            System.out.println("Unknown Exception Occured!!!!");
        }
    }

Как преодолеть эту проблему. Заранее спасибо

Ответы [ 3 ]

1 голос
/ 27 апреля 2010

Не используйте менеджер безопасности, если (i) вы не знаете, что он вам нужен и (ii) вы написали соответствующий файл .policy. Если вы считаете, что это применимо, запустите вашу проблему с -Djava.security.debug = access, неспособностью увидеть, что действительно идет не так. Скорее всего, вы не предоставили себе необходимого разрешения или неправильно указали расположение файла политики.

0 голосов
/ 05 мая 2010

Я думаю, это работает

public static void main(String[] args) throws Exception {

        Remoteserver objremoteserver=new Remoteserver();
        objremoteserver.setmsg("Hello! How are you?");
        System.out.println(objremoteserver.getmsg());
        try
        {
        Naming.rebind("Remotemethod", objremoteserver);
        System.out.println("Server Started");
        }
        catch(RemoteException re)
        {
            System.out.println(re.getLocalizedMessage());
        }
        finally
        {
            System.out.println("Unknown Exception Occured!!!!");
        }
    }

У каждого JRE есть менеджер безопасности по умолчанию, который вы пытаетесь переопределить с помощью нового менеджера безопасности. Вы не указываете какие-либо свойства для этого нового менеджера безопасности. Так что ошибка. Решением является использование менеджера по умолчанию, создающего совершенно новый менеджер безопасности, следуя этим инструкциям .

0 голосов
/ 27 апреля 2010

Убедитесь, что вы настроили RMISecurityManager, как описано здесь

...