Java-апплет AccessControlException: доступ запрещен (SocketPermission) - ГДЕ мне поставить исправление?
Итак, у меня есть апплет, который я пытаюсь встроить в HTML-страницу, и он выдает:
AccessControlException: access denied (java.net.SocketPermission someTarget connect, resolve)
Это отлично; Я знаю, что исправить это можно либо:
grant {
permission java.net.SocketPermission "someTarget", "connect, resolve";
};
Или же
SocketPermission p1= new SocketPermission("someTarget", "connect,resolve");
То, что я хочу знать, это: что из этих двух вещей мне нужно, и где в моем коде я должен поместить это?
3 ответа
Я предлагаю подключиться к тому же хосту, с которого был загружен апплет, это разрешено менеджером безопасности Java. Хост должен быть точно таким же. Редактирование файла политики разрешений ни к чему не приведет, так как вам придется делать это на каждом компьютере, где вы хотите, чтобы апплет работал
Как уже упоминалось в EJP, способ завоевать доверие - это цифровая подпись кода. Посмотрите Подписание и Проверка Файлов JAR для получения дополнительной информации.
Нецелесообразно развертывать файлы политики на компьютере конечного пользователя для апплета, выходящего из Интернета. Когда дело доходит до сети машин, которые все контролируются вами, возникает вопрос: почему бы просто не использовать приложение JWS? Приложение JWS. все равно нужно будет иметь цифровую подпись (или использовать файл политики), но также будет проще в разработке и развертывании.
Обратите внимание, что "завоевание доверия" не требует изменений в коде. Вместо этого код должен быть подписан вами и доверен конечному пользователю при запросе. Единственное, что приходит на ум, это то, что если метод апплета вызывается с использованием JS, он становится ненадежным, если вы не внесете некоторые изменения в код.