是否可以编写通过JDBC连接到Oracle的applet?

时间:2012-12-05 03:27:22

标签: java oracle security jdbc applet

我创建了一个简单的applet(Java 1.7.0_07),在其中我尝试连接到Oracle数据库(ojdbc6.jar)。 applet在我的IDE的applet查看器中运行正常,但无法从Web正常运行。

我正在获得安全异常,因此我签署了jar文件,认为可以修复它,但我仍然得到安全异常,即:

java.security.AccessControlException: access denied ("java.util.PropertyPermission" "oracle.jdbc.RetainV9LongBindBehavior" "read")
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at oracle.jdbc.driver.PhysicalConnection$1.run(PhysicalConnection.java:3147)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.PhysicalConnection.getSystemProperty(PhysicalConnection.java:3143)
    at oracle.jdbc.driver.PhysicalConnection.readConnectionProperties(PhysicalConnection.java:736)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:519)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.ericr.signedApplet.SignedApplet.init(SignedApplet.java:61)
    at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我一直在试图让事情井然有序地撞墙,似乎有关于如何设置这一点的相互矛盾的信息。

所以......我甚至可以做我想做的事情吗?如果是这样,有一个指南让我知道我需要做什么安全性才能让applet在从网络访问时正常工作?

...谢谢

5 个答案:

答案 0 :(得分:2)

问题归结为AccessControlException。显然,需要信任applet才能阅读oracle.jdbc.RetainV9LongBindBehavior属性。

OTOH通常建议通过将其置于Web服务之后来限制对DB的访问。在这种情况下,applet可以简单地连接到同一站点的Web服务,并执行它所需的操作。

答案 1 :(得分:0)

答案 2 :(得分:0)

您可能还想查看VJDBC项目。这可能就是你要找的东西。

答案 3 :(得分:0)

两种环境之间的差异可能与您用于JVM的参数有关。在NetBeans中,对于我的 Apache Tomcat 服务器,我单击并启用了“使用安全管理器”选项,之后,我看到我收到了与您的Web服务器相同的错误

要查找此选项,请转到顶部菜单,然后点击工具&gt;服务器。然后,单击左侧菜单中“服务器”下的Web服务器。在右侧菜单中,单击“平台”选项卡,然后禁用“使用安全管理器”,这可能会解决您的问题。

答案 4 :(得分:-1)

您需要检查访问oracle文件夹的权限或将用户添加到oracle组