当前位置: 首页 > 面试题库 >

通过浏览器小程序使用JDBC时“访问被拒绝”

俞涵涤
2023-03-14
问题内容

我有一个Java小程序,用于查询Oracle数据库中的数据。从IDE内部运行时,它可以正常运行。但是,当我将其作为嵌入在网页中的小程序运行时,在类加载器中出现“访问被拒绝”错误,并且我并没有最模糊的想法对我有什么要求:

Sep 06, 2011 12:58:48 PM oracle.jdbc.driver.OracleDriver registerMBeans
WARNING: Error while registering Oracle JDBC Diagnosability MBean.
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.Thread.getContextClassLoader(Unknown Source)
                at oracle.jdbc.driver.ClassRef.<init>(ClassRef.java:75)
                at oracle.jdbc.driver.ClassRef.newInstance(ClassRef.java:51)
                at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:311)
                at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:199)
                at java.security.AccessController.doPrivileged(Native Method)
                at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:195)
                at java.lang.Class.forName0(Native Method)
                at java.lang.Class.forName(Unknown Source)
                at com.binderton.oracle.ConnectionManager.open(ConnectionManager.java:17)
                at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
                at com.sun.javafx.application.PlatformImpl$3.run(Unknown Source)
                at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
                at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
                at com.sun.glass.ui.win.WinApplication$1$1.run(Unknown Source)
                at java.lang.Thread.run(Unknown Source)
java.lang.ExceptionInInitializerError
                at java.lang.Class.forName0(Native Method)
                at java.lang.Class.forName(Unknown Source)
                at com.binderton.oracle.ConnectionManager.open(ConnectionManager.java:17)
                at com.sun.javafx.applet.FXApplet2$2.run(Unknown Source)
                at com.sun.javafx.application.PlatformImpl$3.run(Unknown Source)
                at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
                at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
                at com.sun.glass.ui.win.WinApplication$1$1.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.Thread.getContextClassLoader(Unknown Source)
                at oracle.jdbc.driver.ClassRef.<init>(ClassRef.java:75)
                at oracle.jdbc.driver.ClassRef.newInstance(ClassRef.java:51)
                at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:260)
                ... 12 more
Got ErrorEvent[url=null label=Failed to start application. cause=null

问题答案:

小程序在具有严格限制的安全规则的环境中运行。您至少需要在小程序上签名。

但是,这里的问题更大,在小程序内执行JDBC是一个非常糟糕的主意。该applet的源代码是公开可用的,因此很容易被黑客入侵。您实际上应该为此创建一个Web服务,然后让您的小程序访问该Web服务。使用Web服务,您的小程序将仅通过HTTP请求/响应就可以与数据库交换信息。使用Web服务时,您可以对公众隐藏数据库访问详细信息,JDBC和SQL代码。

如何精确地创建Web服务取决于服务器环境和所使用的编程语言。例如,在Java EE中,您已经为此使用了一个简单的Servlet,但是分别针对静态(XML /
JSON)和XML Web服务分别支持JAX-RS和JAX-
WS。小程序没有任何安全限制,可以与其地址可通过getCodeBase()例如Eg
访问的主机连接


InputStream response = new URL(getCodeBase(), "servlet?foo=bar").openStream();
// ...


 类似资料:
  • 问题内容: 我正在寻找一种在Java App(使用JDBC)中打开Access MDB文件的方法。 快速的Google搜索建议我为此需要JDBC-ODBC Bridge。 这是否意味着我需要配置要在其上运行应用程序的每个系统,以便为要打开的MDB提供ODBC DSN? 还有一个问题(因为我以前从未使用过ODBC):通信是通过某种套接字(以客户机/服务器方式)还是通过方法/函数调用(例如嵌入Derb

  • 问题内容: 我在使它工作时遇到问题。它接收一个字符串,其中包含几条信息。但是,当我尝试将String写入文件以跟踪程序随时间的变化时,我收到拒绝访问错误: 叠层纱 完整的堆栈跟踪: 58行: 问题答案: 您必须先创建文件夹。但是您不能调用file.mkdirs()-您需要调用file.getParentFile()。mkdirs()-否则,您将使用文件名创建一个文件夹(这将阻止您使用以下命令创建文

  • 本文向大家介绍使用浏览器访问python写的服务器程序,包括了使用浏览器访问python写的服务器程序的使用技巧和注意事项,需要的朋友参考一下 代码如下所示: 注意: 1.开始的时候file_n没有先定义,结果就报错:local variable ‘file_n' referenced before assignment 2.正则表达式一定要先验证筛取的内容是否正确。 3.要获取程序同级文件夹中文

  • 我正在尝试运行一个节点。docker上的js应用程序。我正在使用WSL,并已在docker上成功运行该应用程序。现在的问题是,当我尝试在浏览器上访问应用程序时,它显示为无响应。我无法在浏览器中访问它。我还有一个Reactjs应用程序在docker上运行,我可以通过浏览器访问该应用程序。我做错了什么?为什么在windows浏览器中无法访问Nodejs应用程序?下面是节点的Dockerfile。js

  • 我正在使用jdbc和Tomcat服务器。它已经完美运行了一个星期,它突然崩溃了。我还注意到我什至不需要密码即可从命令行登录mysql。这是我的代码: 下面是catalina.out的堆栈跟踪:

  • 我正在用Extbase构建一个TYPO3扩展,并希望存储通过httpget获取的数据。现在我正在努力使用浏览器访问动作控制器。 插件被实现到第102页 扩展键是xyzlist 插件名称是xyzlistdb 控制器名称是playlicontroller 操作是getAction 域名是sub.domain。de 在播放控制器中。php仅在getAction下 错误日志(“getAction”,0)