0

SQLデータベースを使用する単純なアプレットを作成しています。
このアプレットをNetbeansでローカルに使用すると、問題なく動作しますが、Webにデプロイすると、奇妙なエラーが発生します。
ローカルでJava1.6を使用しており、デプロイするサーバーでJava1.6を実行しています
。J2BC5.1.22を使用しています。
これは私が得るエラーです:

java.lang.ExceptionInInitializerError
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:315)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at FinalProject.DBConnect.<init>(DBConnect.java:29)
at FinalProject.TriviaApplet.init(TriviaApplet.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)
    Caused by: java.security.AccessControlException: access denied
    ("java.util.PropertyPermission" "file.encoding" "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 com.mysql.jdbc.StringUtils.<clinit>(StringUtils.java:70)

ドライバーを初期化するために使用するコードは次のとおりです。

        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection(connectionURL, "db", "pw");

なぜこれが起こっているのかについて誰かが洞察を持っていますか?

さらに、私のアプレットは別のクラスからすべての情報を取得します。^上記はDBConnectクラスからのものです。このクラスのインスタンスが作成され、このクラスがすべてのDB作業を実行します。これをアプレットとして実行する必要がありました。jarとJDBCドライバーを含むlibjarの両方に署名しました。

4

1 に答える 1

0

Webセキュリティの問題が原因です。JDBCドライバーをクライアントにどのようにデプロイしますか?あなたは彼らに十分な許可を与えますか?実際、アプレットでJDBCを使用して、価値のないデータベースにアクセスします。

  1. すべてのクライアントにJREがインストールされていてJDBCドライバーがCLASSPATHに含まれている必要があります。同じJARにアプレットと一緒にJDBCドライバーをパッケージ化してみてください。

  2. すべてのローカルJREでソケット接続を許可してポリシーを変更する必要があります。

permission java.net.SocketPermission "10.6.1.16:1521", "connect, resolve";

そのため、このソリューションはほとんど役に立たなくなります。

于 2012-12-17T02:40:59.100 に答える