RMI Как добавить библиотеки (и предоставить им разрешения для сокетов) - PullRequest
1 голос
/ 30 мая 2011

Для школьного проекта мне нужно создать распределенную систему из отдельного приложения.Мы используем RMI для связи, но мы столкнулись с некоторыми проблемами.

Сервер, который я создал, запускается просто отлично, но клиент (который использует некоторые библиотеки свинга и т. Д.) Выдавал мне исключение classNotFound.Чтобы исправить это, я добавил библиотеки, которые мой проект использует в "C: \ Program Files \ Java \ jre6 \ lib \ ext".Я предпочитаю размещать libs на клиенте (как я делал со сборками).

Может кто-нибудь сказать мне, если это возможно, и если да, то как?

На этом проблемы не заканчиваются, если я запускаю свой клиент сейчас, я получаю исключение java.security.AccessControlException.Я использую файл политики, он выглядит так:

grant
{  permission java.net.SocketPermission 
    "*:1024-65535", "connect,accept";
};

Я также пытался добавить все библиотеки, но это тоже не помогло:

grant codebase "file:${java.home}/../lib/ext/appframework-1.0.3.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/beansbinding-1.2.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/jcalendar-1.3.3.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/looks-2.0.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swing-worker-1.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-1.6.1.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-bean.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-ws-2011_01_16.jar" {
   permission java.security.AllPermission;
};

grant
{  permission java.net.SocketPermission 
    "*:1024-65535", "connect,accept";
};

Я надеюсь, что кто-нибудь можетпомоги мне.

-Rob

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Отладка исключений безопасности java 2 - утомительный процесс проб и ошибок. Я полагаю, что вы запускаете клиент с переключателем JVM, чтобы добавить команду сказать диспетчеру безопасности - добавьте следующее

-Djava.security.debug=access,failure

Вы получите массу отладочной информации, но поиск по запросу «доступ запрещен» покажет вам, какие разрешения необходимо предоставить для какой базы кода. Это не научный процесс - вы просто должны продолжать попытки, пока не решите, что исправили все проблемы безопасности.

0 голосов
/ 30 мая 2011
grant { 
    permission java.security.AllPermission; 
};
...