Где разместить файл политики апплета java?

Я работаю над проектом искусственного интеллекта, который является логической игрой и нацелен на подключение двух пользователей к серверу в сети, который действует как администратор, а затем начинает играть один за другим.

для создания соединений у меня есть код сервера, который просто слушает localhost:8000 и назначает командные значения клиентам по мере их прибытия. После подключения клиенты делают свой ход под контролем администратора.

вопрос в том, что когда я пытаюсь поставить мой код для работы в браузере это не удается со следующей ошибкой:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve)

несмотря на то, что я создал свою собственную политику, сначала предоставив только разрешение доступа сокета к кодовой базе моей папки проекта (file:///home/xxx/projects/-), после того, как он не работал, я предоставил все разрешения все кода. Я попытался разместить файл политики как в домашнем каталоге, так и в том же каталоге, где находится мой код апплета.

благодарен за любые советы, спасибо.

5 ответов


по умолчанию я думаю, что он ищет файл по имени .Ява.политика в вашем домашнем каталоге

вы можете проверить файл / lib/security / java.охрана, чтобы увидеть, куда он смотрит. проверяем ключи с именем политика.url-адрес.n


вы можете установить местоположение файла политики безопасности с помощью этой опции командной строки

-Djava.security.policy=policyfilepath

С


поместите файл политики туда, где находится JRE.

например, мой файл политики находится по адресу C:\Program файлы\Java\jre1.6.0_01\lib\security


Я настоятельно рекомендую соблюдать политику того же происхождения. Последствия для безопасности не всегда очевидны и в лучшие времена. Кроме того, апплет со стандартными разрешениями имеет лучшее удобство использования и должен быть проще в обслуживании.


Если вы предоставляете разрешение на определенный JAR (codebase), это работает только в том случае, если весь стек выполнения от начала потока до вызова метода находится в этом домене codebase/protection.

Если ваш метод alibrary, и вы уверены, что вы получаете доступ к операции безопасно, вы можете использовать Priveledged блок, который по существу гарантирует, что часть стека, вызывающего ваш блок, не рассматривается в расчете доступа.

привилегированный блок, как описано здесь:

http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html

приветы Бернд!--1-->