Java RMI - проблемы с разрешениями сокетов - PullRequest
2 голосов
/ 24 февраля 2010

У меня проблемы с подключением Java-программы к двум разным сокетам. По сути, я хочу инициализировать свой сервер RMI (подключение к порту 1099), а затем также инициализировать PrologBeans на порт 10002. Кажется, инициализация хорошо работает для обоих, но как только я пытаюсь получить доступ к prologBeans, я получаю следующую ошибку:

Exception in thread "main" java.security.AccessControlException: access denied 

    (java.net.SocketPermission 127.0.0.1:10002 connect,resolve)
 at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
 at java.security.AccessController.checkPermission(AccessController.java:546)
 at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
 at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
 at java.net.Socket.connect(Socket.java:519)
 at java.net.Socket.connect(Socket.java:475)
 at java.net.Socket.<init>(Socket.java:372)
 at java.net.Socket.<init>(Socket.java:186)
 at se.sics.prologbeans.PrologSession.connectToServer(PrologSession.java:511)
 at se.sics.prologbeans.PrologSession.initSend(PrologSession.java:442)
 at se.sics.prologbeans.PrologSession.send(PrologSession.java:368)
 at se.sics.prologbeans.PrologSession.executeQuery(PrologSession.java:331)
 at api.ActionRetriever.logEvent(ActionRetriever.java:68)
 at contract.ContractManager.log_event(ContractManager.java:87)
 at gui.RMITrial.main(RMITrial.java:39)

У меня также есть файл политики (в пакете, где находится мой код RMI. Это даже правильное место для размещения файла политики или он должен быть в пакете по умолчанию?), Для которого установлено:

grant {
permission java.security.AllPermission;};

Мне было интересно, есть ли у кого-нибудь идеи о том, почему я получаю ошибку SocketPermission? Неправильно ли настроены мои разрешения?

Любая помощь будет высоко ценится.

Спасибо.

1 Ответ

2 голосов
/ 24 февраля 2010

Вам необходимо включить аргумент виртуальной машины -Djava.security.policy = path / to / policy / file ... и тогда ваш файл политики должен быть прочитан, и все будет хорошо:)

...