AccessControlException, когда я пытаюсь запустить апплет на JSP - PullRequest
0 голосов
/ 15 февраля 2012

Я получаю исключение, когда запускаю свою страницу jsp, в которую встроен апплет

код моего jsp файла

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
     <body>
      <applet code="myform.applet" archive="applet.jar,ojdbc14.jar" width="600" height="480"/>
    </body>
</html>

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

и исключение через

Exception in thread "thread applet-myform.applet-1" java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at myform.applet.init(applet.java:28)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission getClassLoader)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
    at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:316)
    ... 5 more

Я искал везде, но не нашел своего решения, и где-то оно было объяснено в широком смысле, которое я не могу понять как новичок. Пожалуйста, помогите мне, я застрял в этой проблеме с последних двух дней. Заранее спасибо.

1 Ответ

1 голос
/ 15 февраля 2012

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

Из трассировки стека видно, что драйвер Oracle пытается получить доступ к загрузчику системного класса, который запрещен для апплета.

У вас есть, как правило, 3 способа решения этой проблемы.

  1. Подпишите апплет. В этом случае вы сможете сделать все. Но будь осторожен. Следующая проблема будет в том, что драйвер не сможет подключиться к БД из-за брандмауэра между браузером вашего клиента и сервером, на котором работает Oracle.
  2. Разработайте свой клиент как обычное приложение и используйте Java Web Start для его запуска. Пользователь по-прежнему может запустить приложение, щелкнув ссылку в своем веб-браузере, но он получит полнофункциональное приложение (точно так же, как в случае подписанного апплета). Проблема с брандмауэром все еще актуальна.
  3. Создание 3-х уровневого приложения. Интерфейс может быть либо апплетом, либо тонким клиентом. Бизнес-логика может быть простым веб-приложением, которое предоставляет API RESTful и подключается к БД для извлечения и хранения данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...