- ベストアンサー
AppletからMySQLへの接続について
始めまして私は今、JavaAppletからMySQLへ接続し、データを呼び出してAppletの画面に表示するプログラムを作成しましたが、どうしてもMySQLに接続することが出来ません。ためしに、JavaからMySQLへ接続するプログラムを作成し動かしたところ問題はなかったので、JavaAppletの場合にはMySQLに接続するのにJavaと違ってなにか特別な設定やプログラムの記述が必要なのでしょうか?どなたか知っている方がおられましたら、ご教授お願いいたします。 また、今まで試したのは、自分のPCにもMySQLをインストールし接続したところ接続することができたので、以下のような状況になります。 JavaApplet(自分のPC) + MySQL(自分のPC) = 接続成功 JavaApplet(自分のPC) + MySQL(他のPC) = 接続不可 環境は、Webサーバ:Apache2.0.54、Java : j2sdk1.4.2_09、MySQL : MySQL 4.0.16、JDBC : mysql-connector-java-3.1.11-bin.jar です。 また、接続できなかった時にでたエラーは以下のとおりです。 ------------------------------------------------- ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: java.security.AccessControlException: access denied (java.net.SocketPermission 150.xxx.xxx.xxx:3306 connect,resolve) STACKTRACE: java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 150.xxx.xxx.xxx:3306 connect,resolve) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156) (以下省略) ------------------------------------------------- 上記の情報だけでは、わかりにくいかもしれませんが、 どうかよろしくお願いいたします。 以上
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
JavaAppletは、セキュリティのために「自分が配置されていたWebサーバのマシン」としかTCP/IPの通信ができないようになっている。 つまり、AppletでJDBC直DBを行うには、WebサーバまたはAppletの保存場所とデータベースサーバが同じマシンにないといけない。これは、(クライアント側の)JavaVMが制御しているので、他のPCのDBサーバを設定変更して・・・・という訳にも行かない。 なので、同一マシンにDBサーバを置くか、またはAppletはServletなどと通信を行い、ServletがDBアクセスを行う、という形に変えるか、またはRPCのようなやつ・・・・なんやったか、そいつを使うしかないね。
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
#1さんの回答のとおり、原因はセキュリティ上の制限です。 JavaAppletのセキュリティ制限を解除するには、jarに署名をつけるかPlug-inの設定でポリシーを指定するかどちらかで解決できます。
お礼
いい機会なのでセキュリティ関連の勉強もしたいと思います。 Bonjinさんありがとうございました。
お礼
anmochiさんありがとうございます!参考になりました。 今後は、ServletからDBアクセスするプログラムに変更したいと思います。