【问题标题】:AccessControlException when i'm trying to run applet on jsp当我尝试在 jsp 上运行小程序时出现 AccessControlException
【发布时间】:2012-02-15 14:02:17
【问题描述】:

我在运行我嵌入了小程序的 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,我在其中创建了一个类,我在其中尝试从 oracle 数据库表中检索数据库值。

和异常通过

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

我到处搜索,但没有得到我的解决方案,并且在某处已对其进行了广泛的解释,我作为新手无法理解。请帮助我,自从过去两天以来,我一直被这个问题困扰。提前致谢。

【问题讨论】:

    标签: java security jsp jdbc applet


    【解决方案1】:

    小程序在安全的环境中运行。 SecurityManager 控制applet 正在做什么并且不允许它执行被禁止的操作。

    从堆栈跟踪中我们可以看到,Oracle 驱动程序试图访问被禁止用于小程序的系统类加载器。

    你通常有 3 种方法来解决这个问题。

    1. 签署您的小程序。在这种情况下,您将能够做任何事情。但小心点。下一个问题是驱动程序将无法连接到数据库,因为客户端浏览器和运行 Oracle 的服务器之间存在防火墙。
    2. 将您的客户端开发为常规应用程序并使用 Java web start 来启动它。用户仍然可以通过单击其 Web 浏览器中的链接来启动应用程序,但他将获得功能齐全的应用程序(与签名小程序完全一样)。防火墙问题在这里仍然相关。
    3. 创建 3 层应用程序。前端可以是小程序或瘦客户端。业务逻辑可能是一个简单的 Web 应用程序,它公开 RESTful API 并连接到 DB 以检索和存储数据。

    【讨论】:

    • 所以,第三个选项将是最好的......在你看来......??
    • 是的,我相信第三个选项就是所谓的“正确”解决方案。选择取决于其他要求、您的技能和开发完整解决方案所需的时间。
    • 我会说您的选项 3 是首选。通常,您希望避免将数据库暴露给应用程序服务器以外的任何东西。
    猜你喜欢
    • 1970-01-01
    • 2019-01-25
    • 2019-01-14
    • 1970-01-01
    • 2015-04-16
    • 2010-09-21
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多