AppletからDB接続について

このQ&Aのポイント
  • Appletから直接、DB(Oracle9.2)に接続するPGを作成中です。
  • しかし、ブラウザで表示しようとすると「access denied(java.util.PropertyPermission oracle.jserver.version read)」というエラーが発生します。
  • Appletではセキュリティの関係で、DB接続などができない可能性があります。
回答を見る
  • ベストアンサー

AppletからDB接続について

いつもお世話になっております。 現在、Appletから直接、DB(Oracle9.2)に接続するPGを作っています。 しかし、appletviewerだと、表示できるのですが、dbサーバに置いて、クライアントからブラウザで表示しようとすると、以下のエラーが発生してしまいます。 「access denied(java.util.PropertyPermission oracle.jserver.version read)」 Appletではセキュリティの関係で、DB接続などができないと聞きますが、それが原因なのでしょうか? 環境ですが、 Java:J2SDK1.4.09、 DB:Oracle9.2、 JDBC:ojdbc14.jar を使っています。 宜しくお願い致します。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

アプレットでは「サンドボックス」と呼ばれるセキュリティモデルによりアクセスが制限されます。DBに接続できないのはその原因です。 これを解消するためには ・アプレットに署名をつける ・java.policyファイルの設定を変更する という方法があるようです。(実際にやったことはないので、本当にこの方法でDBに接続できるようになると言う保障はありません) java.policyファイルの変更方法については下記のHPを参考にしてみてください。

参考URL:
http://msugai.fc2web.com/java/security/policy.html
kiyohu16
質問者

お礼

回答ありがとうございます。 java.policyを変更すれば、できるようです。

関連するQ&A

  • 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) (以下省略) ------------------------------------------------- 上記の情報だけでは、わかりにくいかもしれませんが、 どうかよろしくお願いいたします。 以上

    • ベストアンサー
    • Java
  • JavaでのOracle接続について(JDBC)

    はじめまして。 先週よりJavaの勉強を始めていまして 先日からDB接続(Oracle)をやっているのですが、Oracleに接続することが出来ません。色々なサイトからクラスパスが通っていないというエラーのようなのですが、プログラミング経験のある友人に聞いてもさっぱり原因が分かりません。また何度もインストールをやり直して同じです。以下に環境とソースを載せておきますので、もし何か解決のヒントになるような事がありましたら教えて下さい。 ●状況 (1)コンパイルは通るがjavaコマンドで実行をすると”Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driveOracleDriver”が出てしまう。 (2)C:\oracle\ora92\jdbc\lib\ojdbc14.jarを環境変数→Pathへしっかりと通してあります。(setコマンドでも確認済みです) (3)C:\j2sdk1.4.1_02\jre\lib\extへojdbc14.jarをコピー (4)SQL PLUSからは接続出来る。 ●環境 クライアント:Win2000 DBサーバー:SQLサーバー(別マシンに環境構築) DB:Oralce9.2.0 JDK:1.4.1_02 import java.sql.*; class Employee { public static void main (String args []) throws SQLException,ClassNotFoundException { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@ホスト名:1521:SID", "ID", "パスワード"); Statement stmt = conn.createStatement (); ResultSet rset = stmt.executeQuery ("SQL"); while (rset.next ()) System.out.println (rset.getString ("ISBN")); rset.close(); conn.close(); } } 以上です。何か足りない情報がありましたら教えて下さい。

  • アプレットでのDB接続の行い方

    JAVAアプレットでAccessのDBに接続して値を取得し、その値をブラウザ上に表示するプログラムを作っています。ソースコードをコンパイルしブラウザ(IE6.0)に表示させようとすると、 Exception:java.security.AccessControlException: access denied(java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc) という文がブラウザ上に表示され、値が表示されません。なにかJAVAのセキリティにひっかかっていると思われるのですが、どんな方法ならDBから値を取って表示させられるのでしょうか。

    • ベストアンサー
    • Java
  • Appletが動きません・・・

    こんにちは。今日Javaを学び始めた超初心者です。 -HelloApplet.java-------------------------- import java.awt.Graphics; import java.applet.Applet; class HelloApplet extends Applet{ public void paint(Graphics g){ g.drawString("Hello World", 50,25); } } ------------------------------------------- で、これをコンパイルしてHTMLに組み込み、Appletviewerで見てみるのですが、 以下のようなメッセージが出ます。 ---------------------------------------------- C:\java>appletviewer hello.html load: HelloApplet.class は public ではありません。あるいは public なコンストラク タを持っていません。 java.lang.IllegalAccessException: Class sun.applet.AppletPanel can not access a member of class HelloApplet with modifiers "" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57) at java.lang.Class.newInstance0(Class.java:302) at java.lang.Class.newInstance0(Class.java:302) at java.lang.Class.newInstance(Class.java:261) at sun.applet.AppletPanel.createApplet(AppletPanel.java:617) at sun.applet.AppletPanel.runLoader(AppletPanel.java:546) at sun.applet.AppletPanel.run(AppletPanel.java:298) at java.lang.Thread.run(Thread.java:534) ---------------------------------------------- HTMLを開くと赤い「×」が出ています。 環境ですが、 CLASSPATH:C:\j2sdk1.4.2_04\lib\tools.jar;.;c:\java PATH:C:\WINDOWS;C:\WINDOWS\COMMAND;C:\j2sdk1.4.2_04\bin 作業フォルダ: c:\java となっています。 おかしいところはないと思うのですけど・・・。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • javaに詳しい方に質問です

    javaに詳しい方に質問です 私が使っているパソコンはwindowXPで今BG.java , BG.html の2つのファイルがあります ブロック崩しのソースです コマンドプロンプト上で下記のように操作をしたら、(画面の貼り方がわからなく申し訳ありません) C:\j2sdk1.4.2_05\bin>javac BG.java C:\j2sdk1.4.2_05\bin>appletviewer BG.html Exception in thread "main" java.util.MissingResourceException: Can't find resour ce for bundle sun.applet.resources.MsgAppletViewer, key appletpanel.badattribute .exception at java.util.ResourceBundle.getObject(ResourceBundle.java:314) at java.util.ResourceBundle.getObject(ResourceBundle.java:311) at java.util.ResourceBundle.getString(ResourceBundle.java:274) at sun.applet.AppletMessageHandler.getMessage(AppletMessageHandler.java: 39) at sun.applet.AppletPanel.showAppletStatus(AppletPanel.java:755) at sun.applet.AppletPanel.init(AppletPanel.java:190) at sun.applet.AppletViewer.<init>(AppletViewer.java:177) at sun.applet.StdAppletViewerFactory.createAppletViewer(AppletViewer.jav a:82) at sun.applet.AppletViewer.parse(AppletViewer.java:1122) at sun.applet.AppletViewer.parse(AppletViewer.java:1056) at sun.applet.Main.run(Main.java:138) at sun.applet.Main.main(Main.java:80) というなんだかよくわからない表示がされて実行がされませんでした 本当ならプログラムを張り付けたかったのですが、文字数に制限があるし ダウンロード先を忘れてしまいまして… ということなので詳しいことは構わないので、この表示が何を表しているのか ご回答お願いします

    • ベストアンサー
    • Java
  • Class.forNameでエラーになる

    eclipseでjavaのSQL接続を書こうとしているんですが クラスが無いというエラーが出てしまいます。 Class.forNameの所で「処理されない例外の型 ClassNotFoundException」と出ます。 その次の行もエラーになってて、とりあえずClass.forNameだけでもエラー無くそうと思い調べました。 ぐぐったらクラスパス?が悪いとなると書いてあったので eclipseで「プロジェクトを右クリック→プロパティー→Java Build Path→ライブラリタブ」から 「外部jarの追加」で「C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib」に入ってる 「ojdbc5.jar」と「ojdbc6.jar」と「ojdbc6_g.jar」を追加しました。(どれが対象かわからなかったので全部追加) この状態でも同じエラーが出てしまいます。クラスパスの指定の方法が悪いんでしょうか? 入れてるoracleは「Oracle Database Express Edition 11g Release 2」です。 OSは「Windows Vista」になります。接続はローカル接続です。 以下コードです。最初の方の<HTML>らへんは無視して下さい。 import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<BODY>"); out.println(new java.util.Date()); out.println("</BODY>"); out.println("</HTML>"); Class.forName ("oracle.jdbc.driver.OracleDriver"); Connection connection=DriverManager.getConnection("jdbc:oracle:oci8:@","system","pass"); } }

  • Appletの使用に関して

    javaでゲームを作っていて、サーバーとクライアントプログラムがあるのですが、ブラウザで表示したいと思い、クライアントプログラムをApplet化しました。デバッグをしたところ、appletviewer ファイル名.htm で実行すると動作するのですが、HTMLファイルをダブルクリックしても表示されません。また、アップロードして、ブラウザで実行しようとしてもうまくいきません。 とりあえず、なぜappletviewerで出来るファイルをダブルクリックでやると出来ないのかがわからないので2つの実行の仕方の違いを教えて下さい。 また、ブラウザで出来ない理由としてどのようなことが考えられるのでしょうか?

    • ベストアンサー
    • Java
  • -Applet表示でのjava.lang.ClassNotFoundException-

    お世話になります。 只今、Appletの操作を勉強しています。 先日まで動いていた、Appletが急に表示されなくなってしまいました。 「appletviewer」で実行すると表示されるのですが、HTMLを叩くと表示されません。 JAVAコンソールには・・・ java.lang.ClassNotFoundException: javax.swing.JComboBox at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java) at java/lang/ClassLoader.loadClassInternal (ClassLoader.java) at DemoApplet.init (DemoApplet.java) at com/ms/applet/AppletPanel.securedCall0 (AppletPanel.java) at com/ms/applet/AppletPanel.securedCall (AppletPanel.java) at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java) at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java) at com/ms/applet/AppletPanel.run (AppletPanel.java) at java/lang/Thread.run (Thread.java) ・・・と、表示されています。 クラスパスの問題であれば、「appletviewer」でも動かないだろうし・・・何が問題なのでしょうか?? ・・・行き詰まってます。

    • ベストアンサー
    • Java
  • appletの画像が表示されない

     画像を表示するappletを作ったんです。  コマンドのappletviewerでは確認出来るんですが、IEでは何故か表示されません。何故なんでしょう?  WINXP/IE6.0.2600です。  以下にコードを記述します。 import java.awt.*; import java.applet.*; public class test extends Applet {  Image img;  public void init() {   img = getImage(getDocumentBase(), "test.PNG");  }  public void paint(Graphics g) {   g.drawImage(img, 10, 10, this);  } }

    • ベストアンサー
    • Java
  • サーブレットからJavaBeansを利用したDB接続について

    初歩的な質問ですみません。 下記環境で、Javaを勉強しています。 教材 :やさしいJava 活用編 Lesson8 Sample5 実行環境:j2sdk1.4.1_07 (教材では、j2sdk-1_4_0) Tomcat 5.0(教材では、Tomcat-3.2.3) IE6.0 サーブレットでリクエストを受付け、JavaBean経由でDBに接続(Access2000を利用)しDBの中身をJSPで表示するいう流れです。サーブレットのURLを指定して実行してもjspページには何も表示されません。 ログファイルには下記エラーが記述されています。 勘違いか、何らかの初歩的なミスだと思いますが、解決方法が見つかりません。解決方法をご存知の方教えて下さい。よろしくお願いします。 尚、JDBC-ODBCドライバを使用していますが、サーブレットからではなくJavaアプリからではAccess2000のDB参照更新が出来ています。サーブレットから(JavaBean経由)だとうまくいかないという事象です。 java.sql.SQLException: [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。 at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3028) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at CarDB.CarDBBean.<init>(CarDBBean.java:22) at Sample5.doGet(Sample5.java:16) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at ~略~

専門家に質問してみよう