繁体   English   中英

当我尝试在jsp上运行applet时出现AccessControlException

[英]AccessControlException when i'm trying to run applet on jsp

当我运行自己的jsp页面时,出现了异常,我在其中嵌入了applet

我的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

我到处搜索,但是没有得到我的解决方案,并且在某处已经进行了广泛的解释,这对于新手来说是无法理解的。 请帮助我,因为最近两天以来我一直遇到这个问题。 提前致谢。

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

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

通常,您有3种方法可以解决此问题。

  1. 在小程序上签名。 在这种情况下,您将能够执行所有操作。 不过要小心。 下一个问题将是,由于客户端的浏览器与运行Oracle的服务器之间存在防火墙,因此驱动程序将无法连接到DB。
  2. 将您的客户端开发为常规应用程序,并使用Java Web Start来启动它。 用户仍然可以通过单击其Web浏览器中的链接来启动该应用程序,但是他将获得功能齐全的应用程序(与经过签名的applet完全相同)。 防火墙问题在这里仍然很重要。
  3. 创建3层应用程序。 前端可以是applet或瘦客户端。 业务逻辑可以是一个简单的Web应用程序,它公开RESTful API并连接到DB以检索和存储数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM