Java Security AccessControlException в апплете - PullRequest
0 голосов
/ 16 марта 2011

У меня проблема с моим апплетом. Предполагается взять URL-адрес и проанализировать HTML-код для создания изображения. Я получил его для работы на моем отладчике затмения. Однако, когда я пытаюсь использовать его в веб-браузере, я получаю AccessControlException. Я использую метод jEditorPane.setPage (url). В настоящее время и апплет, и URL размещены на моем локальном хосте, и я сам подписал апплет.

java.lang.RuntimeException: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:80 connect,resolve)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at javax.swing.JEditorPane.getStream(Unknown Source)
    at javax.swing.JEditorPane.setPage(Unknown Source)
    at javax.swing.JEditorPane.setPage(Unknown Source)
    at com.mindbody.printer.PrinterApplet.print(PrinterApplet.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

1 Ответ

0 голосов
/ 17 марта 2011

Неподписанному апплету разрешено подключаться только к хосту, с которого он пришел.И даже для подписанных апплетов в методах, вызываемых из кода с меньшим доверием (например, код javascript здесь), он имеет только права на этот код (или, точнее, пересечение всех прав).

Чтобы иметь возможностьчтобы сделать все, на что у вашего апплета есть права, оберните нужный код кодом AccessController.doPrivileged(...).(Но убедитесь, что это не может делать опасные вещи, когда приводятся злые аргументы извне.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...