gpt4 book ai didi

java - 我如何允许我的 Java applet 使用 MySQL?

转载 作者:可可西里 更新时间:2023-11-01 07:57:50 25 4
gpt4 key购买 nike

我最近将我的爱好 java 项目嵌入到页面中 thanks to this very site ,但现在我遇到了一些安全问题。

我有包括:

import java.sql.*;

和行:

Class.forName("com.mysql.jdbc.Driver").newInstance();

以及我的 src 目录中的 mysql .jar 文件,它在控制台中工作,并且在小程序中从小程序工作正常 - 直到我代码中的 forName() 行,它抛出异常:

    Exception: com.mysql.jdbc.Driverjava.lang.ClassNotFoundException: com.mysql.jdbc.Driver    java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.-1)    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.checkExit(Unknown Source)    at java.lang.Runtime.exit(Unknown Source)    at java.lang.System.exit(Unknown Source)    at applet.Database.connectDB(Database.java:80)    etc...

我想我可以用 client.policy 文件修复它,否则我可能需要编写一个抽象层,它使用服务器-客户端网络连接从服务器端查询...

我相信这里的 Java 专家可能知道最好的方法。

最佳答案

我认为安全异常实际上来自您的小程序中的 System.exit() 调用,在 Class.forName() 之后。通常不允许在未签名的小程序中调用 System.exit(),因为它会关闭整个 JVM。您是否检查过第 80 行是否实际上是 Class.forName() 行,或者第 80 行是否有某种异常处理程序在驱动程序未加载时尝试调用 System.exit()?

无论如何,为了在您的小程序中加载 mysql jar 文件,您需要将其包含在 ARCHIVE 属性中,如下所示:

<APPLET ARCHIVE="mysql.jar" CODEBASE="./src/" ...

一旦你过了这个阶段,你仍然需要在与网络服务器相同的 IP 号/主机名上托管 mysql 服务器,并将它开放给所有可以访问你的小程序的人。正如托尼所说,出于安全原因,人们通常不会这样做。最好在服务器端编写一些东西,如果您可以控制应用程序服务器,并使用 XML 或其他一些数据交换方法将数据输出到小程序。当然,如果您只是尝试了解 applet,那可能没问题 - 但如果可能,请注意将 mysql 置于防火墙之后。

关于java - 我如何允许我的 Java applet 使用 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com