Java 是否可以编写通过JDBC连接到Oracle的小程序?

Java 是否可以编写通过JDBC连接到Oracle的小程序?,java,oracle,security,jdbc,applet,Java,Oracle,Security,Jdbc,Applet,我创建了一个简单的applet(java1.7.0\u07),在其中我尝试连接到一个Oracle数据库(ojdbc6.jar)。小程序在我的IDE的小程序查看器中工作正常,但不能从web上正确运行 我收到了安全异常,所以我签署了jar文件,认为这会解决它,但我仍然收到了安全异常,即: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "oracle.jdbc.RetainV9Lo

我创建了一个简单的applet(
java1.7.0\u07
),在其中我尝试连接到一个Oracle数据库(
ojdbc6.jar
)。小程序在我的IDE的小程序查看器中工作正常,但不能从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)
java.security.AccessControlException:拒绝访问(“java.util.PropertyPermission”“oracle.jdbc.RetainV9LongBindBehavior”“读取”)
位于java.security.AccessControlContext.checkPermission(未知源)
位于java.security.AccessController.checkPermission(未知源)
位于java.lang.SecurityManager.checkPermission(未知源)
位于java.lang.SecurityManager.checkPropertyAccess(未知源)
位于java.lang.System.getProperty(未知源)
位于oracle.jdbc.driver.PhysicalConnection$1.run(PhysicalConnection.java:3147)
位于java.security.AccessController.doPrivileged(本机方法)
位于oracle.jdbc.driver.PhysicalConnection.getSystemProperty(PhysicalConnection.java:3143)
位于oracle.jdbc.driver.PhysicalConnection.readConnectionProperties(PhysicalConnection.java:736)
位于oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:519)
位于oracle.jdbc.driver.T4CConnection(T4CConnection.java:228)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于com.ericr.signedApplet.signedApplet.init(signedApplet.java:61)
位于com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(未知源)
位于sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(未知源)
位于java.lang.Thread.run(未知源)
我一直把头撞在墙上,试图把事情安排好,但在如何设置这一点上,似乎有相互矛盾的信息

所以。。。甚至有可能做我想做的事吗?如果是这样的话,是否有一个指南让我知道我需要在安全方面做些什么,以便在从web访问时让小程序正常工作


谢谢…

现在或应该可以通过JDBC从小程序连接到Oracle数据库;有关说明,请参阅。

问题归结为
AccessControlException
。为了读取
oracle.jdbc.RetainV9LongBindBehavior
属性,显然需要信任小程序


通常建议通过将数据库放在web服务后面来限制对数据库的访问。在这种情况下,小程序可以简单地连接到同一站点的web服务,并执行它所需的操作。

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

您可能还需要签出项目。这可能就是您想要的。

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


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

尽管我没有看到您将JDBC连接公开以直接从浏览器中的代码访问的场景,与@AndrewThompson将DB置于web服务之后的建议相反。请在评论中添加此类响应。这并不能提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时在自己的帖子上发表评论,一旦有足够的评论,您就可以发表评论。您应该阅读有关自签名小程序的内容。若小程序被签名,它和桌面应用程序并没有区别。它可以访问其他主机或文件系统。