JDBCレルムによるFORMパスワード認証のエラー

このQ&Aのポイント
  • データベースに接続できず、致命的エラーが発生しました
  • server.xmlのデータベースの設定に問題がある可能性があります
  • MySQLのドライバーに関して正しい設定が必要です
回答を見る
  • ベストアンサー

JDBCレルムによるFORMパスワード認証

JDBCレルムによるFORMパスワード認証 以下のようなエラーが出てデータベースに接続できません: 2010/03/28 4:13:21 org.apache.catalina.realm.JDBCRealm start 致命的: データベース接続オープン中に例外が発生しました java.sql.SQLException: org.gjt.mm.mysql.Driver at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:704) at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:786) server.xmlのデータベースに関する部分は以下の通りです: <Realm className="org.apache.catalina.realm.JDBCRealm" connectionURL="jdbc:mysql://127.0.0.1/authorization" driverName="org.gjt.mm.mysql.Driver" connectionName="root" connectionPassword="" ←ここは空欄でいいですか? roleNameCol="role" userCredCol="password" userNameCol="username" userRoleTable="roles" userTable="users" /> …検索してみるとorg.gjt.mm.mysql.Driverは古いのでcom.mysql.jdbc.Driverを使うべき、とありました (http://www.javadrive.jp/servlet/auth/index5.html)。 しかし、org.gjt.mm.mysql.Driverをcom.mysql.jdbc.Driverに変えてみましたが、結果は変わりません。 本来、どちらが正しいのでしょうか? ←まずはこの質問の回答をお願いします あと、自分のMySQLはユーザー名は"root"で設定してあるのですが、パスワードは設定していません (つまり、MySQLをコマンドラインから起動するときはパスワードを空欄のままEnterを押して入れます)。 自分の場合、connectionNameとconnectionPasswordは上記の通りで良いのでしょうか?  ←次にこの質問の回答をお願いします Tomcatのライブラリは以下の通りです: Directory of C:\apache-tomcat-6.0.26\lib [.] [..] annotations-api.jar catalina-ant.jar catalina-ha.jar catalina-tribes.jar catalina.jar el-api.jar jasper-el.jar jasper-jdt.jar jasper.jar jsp-api.jar servlet-api.jar tomcat-coyote.jar tomcat-dbcp.jar tomcat-i18n-es.jar tomcat-i18n-fr.jar tomcat-i18n-ja.jar MySQLのデータはちゃんと入力されており、MySQL単体であれば、もちろん動作します: mysql> select * from roles; +----+----------+--------+ | id | username | role | +----+----------+--------+ | 1 | nakamura | member | | 2 | tanaka | member | +----+----------+--------+ mysql> select * from users; +----+----------+----------+ | id | username | password | +----+----------+----------+ | 1 | nakamura | 1234 | | 2 | tanaka | 5678 | +----+----------+----------+ …では、宜しくお願いします。

  • kicker
  • お礼率89% (235/263)
  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

ドライバの指定は com.mysql.jdbc.Driver でOK それよりもライブラリ群に JDBCドライバっぽいのが 入っていないみたいだけど? ちゃんと入れてね。 まずはそこからよ。 入手先: http://dev.mysql.com/downloads/connector/j/

kicker
質問者

お礼

仰る通りにJDBCドライバを入れたらエラーが消えてプログラムも動きました! そんなドライバが要るなんて知りませんでした。 これでようやくMySQLの機能を操作できるんですね。ワクワクしてきました。 ありがとうございました!

関連するQ&A

  • MySQLのJDBCドライバについて

    現在、MySQL3.2.3を使ってJSPの学習をしています。ドライバはmm.mysql-2.0.4-bin.jarを使用しています。 色々なホームページを調べると、 Class.forName(ドライバ名); のドライバ名が、org.gjt.mm.mysql.Driverとcom.mysql.jdbc.Driverの2つが紹介されているのですが 何が違うのでしょうか? ちなみに私の環境では前者の方だとうまくいくのですが後者だと javax.servlet.ServletException:com.mysql.jdbc.Driver のエラーになってしまいます。 MySQLのドライバによって違ってくるのでしょうか? 初歩的な質問で申し訳ございませんが教えてください。 その他環境: OS:Windows ME JDK1.4.0 Tomcat4.0 を使用しています。

    • ベストアンサー
    • Java
  • JDBCドライバについて

    JavaからアクセスしたいのでJDBCドライバをインストール、設定しようとしたのですが、Tomcatに組み込むやり方がわかりません。このサイトを参考にしてやったのですが・・・ << db105.java >> データベース(0):JDBCドライバ JavaのプログラムからMySQLのデータベースへ接続するにはJDBCドライバが必要である。 ●JDBCドライバのダウンロードとインストール (1)Webブラウザで、http://www.mysql.com/downloads/に接続する。 ダウンロードするバージョン(MySQL Connector/J 3.0)をクリックする。 (2)http://dev.mysql.com/downloads/connector/j/3.0.htmlに切り替わる。Downloadをクリックする。 (3)ダウンロードが始まるので、保存先をデスクトップにする。ファイル(mysql-connector-java-3.0.15-ga.zip)がデスクトップに保存される。 (4)ZIP形式のファイル(mysql-connector-java-3.0.15-ga.zip)を解凍する。デスクトップ上のディレクトリ(mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga)内のファイル(mysql-connector-java-3.0.15-ga-bin.jar)にJDBCドライバが存在する。 (5)JDBCドライバを環境変数CLASSPATHに追加する。 SET CLASSPATH=%CLASSPATH%;c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar;. ただし、JDBCドライバは、 c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jarに存在する。 ●Tomcatに組み込む。 ファイル(mysql-connector-java-3.0.15-ga-bin.jar)を %CATALINA%\shared\libの下にコピーする。その後、再起動する。 2番目の黒丸の%CATALINA%\shared\libが全くみつからないです。教えてください~;;

    • ベストアンサー
    • MySQL
  • apacheとtomcat連携時においてのJDBCの設定

    似たケースが検索で見つけられず 投稿させて頂きます。 JDBCをインストールしmysqlとの 連携をしたいのですがうまくいきません。 apacheとtomcatの連携に関しては 以下のページを参考にしました。 http://www.javaroad.jp/opensource/js_tomcat3.htm そしてJDBCの設定に関しては参考にしている本が古いため コネクションプーリングの設定がAdministratorになっており 当方のtomcat6バージョンではAdministratorが 設定できなかったため(できないですよね?)色々調べた結果 以下のファイルを設定しました。 アプリケーションルート・META-INF/context.xml ---------------------------------------------------------------- <Context displayName="Jsp_Servlet Samples" docBase="wl_jsp" path="/wl_jsp" reloadable="true"> <Realm className="org.apache.catalina.realm.DataSourceRealm"  ~中略(この部分は設定しなくても良いと書かれていました)~ <Resource name="jdbc/Wl_Jsp" auth="Container" type="javax.sql.DataSource" maxActive="4" maxIdle="2" maxWait="5000" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/wl_jsp?useUnicode=true&characterEncoding=Windows-31J" username="wl_jsp" password="wl_jsp" validationQuery="SELECT count(*) FROM books" /> ---------------------------------------------------------------- 以下本に書かれていた設定値です プロパティ    |概要         |設定値 ---------------------------------------------------------------- JNDI名      |データソースを識別  |jdbc/Wl_Jsp ---------------------------------------------------------------- データソースURL  |接続文字列      |jdbc:mysql://localhost/wl_jsp?useUnicode=true&characterEncoding=Windows-31J ---------------------------------------------------------------- JDBCドライバクラス|ドライバクラス修飾名 |org.gjt.mm.mysql.Driver ---------------------------------------------------------------- ユーザー名    |接続時のユーザー名  |wl_jsp ---------------------------------------------------------------- パスワード    |接続時のパスワード  |wl_jsp ---------------------------------------------------------------- 有効な最大接続数 |プーリングする最大数 |4 ---------------------------------------------------------------- アイドル状態の最大接続数|待機時に最低維持する接続数|2 ---------------------------------------------------------------- 最大接続待ち時間 |接続に対しての待ち時間|5000(ミリ秒) ---------------------------------------------------------------- クエリの検証   |接続検証用のSQL命令  |SELECT count(*)FROMbooks web.xmlについてはweb-appタグ直下に以下を追加しました。 <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/Wl_Jsp</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> mysql-connector-java-5.1.7-bin.jarファイルについては Toncat 6.0/common/libに保存せよと本にはありますが commonディレクトリが無いためToncat 6.0/libに保存してあります。 またCLASSPATHの設定も本にはありませんでしたが ネットで色々調べていたらでてきましたので 以下のように設定してみましたがだめでした。 -------------------------------------------------------------- C:\Program Files\Apache Software Foundation\ Tomcat 6.0\libmysql-connector-java-5.1.7-bin.jar; -------------------------------------------------------------- 実行結果になります。 ---------------------------------------------------------------- javax.servlet.jsp.JspException: DataSource が無効であるため、Connection を取得できません: "org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'" ---------------------------------------------------------------- 環境です --------------- os:windows xp home sp2 apache2.2 tomcat6.0 jdk1.6.0_10 mysql-connector-java-5.1.7-bin.jar --------------- 長乱文失礼致しました。 他に必要な設定などありますでしょうか? アドバイス・ヒントなどありましたらお願いします。

    • ベストアンサー
    • Java
  • JDBCが見つからないとメッセージが出る

    PostgreSQLをバージョン8.2から9.2にUPし、Tomcatをバージョン5から7にUPしました。 そのほか、OSはWindows7でローカルシステムを構築中です。 実行すると、HTTPステータス500javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSourceFactory] とエラーが出ます。 以下の環境設定の間違いと思われますが、どこを直せばよいかわかりません。 よろしくご教授ください。 PostgreSQLは、C:\Program Files\postgresql9.2に配置しました。 Tomcatは、C:\Tomcat7に配置しました。 システムはC:\Tomcat7\webapps\test1に配置しました。 JDBCドライバは、postgresql-9.1-901.jdbc3.jar と postgresql-9.1-901.jdbc4.jar を C:\Tomcat7\libnにコピー&ペーストしました。 接続の定義は、C:\Tomcat7\conf\catalina\localhost に test1.xmlファイルを作りました。 以下がその記述です。 <?xml version='1.0' encoding='utf-8'?> <Context path="/test1" reloadable="true" docBase="C:\Tomcat7\webapps\test1" workDir="C:\Tomcat7\work" > <Resource name="jdbc/RDBMS" auth="container" type="javax.sql.DataSource" debug="1" factory="org.apache.commons.dbcp.BasicDataSourceFactory" driverClassName="org.postgresql.Driver" username="postgres" password="postgres" maxActive="100" maxIdle="30" maxWait="10000" url="jdbc:postgresql://localhost:5432/LocalDB" removeAbandoned="true" removeAbandonedTimeout="300" /> </Context>

  • MySQLとEclipseの接続方法について

    みなさん初めまして。 SQLについて只今勉強中の者です。 EclipseとMySQLを接続したいのですが、どうしても接続できません。 利用環境 apache-tomcat-6.0.36 MySQL5.5 Windowsはxpです。 apache-tomcat-6.0.36を利用しており、JDBCドライバをダウンロード後、Tomcat内のcommon\lib内にmysql-connector-java-5.1.22-binを導入し、環境変数でパスを通しています。 TomcatとEclipseの接続は確認しています。 また、MySQLについては起動確認や、データベース作成は行えました。 原因のjava.lang.ClassNotFoundException: com.mysql.jdbc.Driverから、JDBCドライバにパスが通っていないため接続が出来ていないと考えております。 初歩的な質問かもしれませんが宜しくお願い致します。 以下は実行した際に表示された内容です。 HTTPステータス 500 - -------------------------------------------------------------------------------- type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 原因 javax.servlet.ServletException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794) org.apache.jsp.admin_jsp._jspService(admin_jsp.java:108) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 原因 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:186) org.apache.jsp.admin_jsp._jspService(admin_jsp.java:66) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 注意 原因のすべてのスタックトレースは、Apache Tomcat/6.0.32のログに記録されています -------------------------------------------------------------------------------- Apache Tomcat/6.0.32 以上です、宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • java.lang.ClassNotFound

    eclipseを使ってデータベースの検索を行いたいのですが、実行すると java.lang.ClassNotFoundException: com.mysql.jdbc.Driver とエラーが出ます。ビルド・パスのライブラリーには下記のものが入っているのですが あとは何が足りていないのでしょうか? jstl.jar standard.jar TOMCAT_HOME/common/lib/jasper-runtime.jar TOMCAT_HOME/common/lib/jsp-api.jar TOMCAT_HOME/common/lib/servlet-api.jar jdk1.5.0_22

    • ベストアンサー
    • MySQL
  • JDBCでMySQLに接続

    Linuxにmysql-4.1.7をインストールして、JDBCドライバを入れ、javaからデータベースを操作しようとしています。 しかし、「mysqld_safe --user=mysql &」を実行してから、javaプログラムをコンパイルして実行すると、 java.sql.SQLException: Cannot connect to MySQL server on localhost:3306. Is there a MySQL server running on the machine/port you are trying to connect to? (java.net.ConnectException) at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:331) at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89) at org.gjt.mm.mysql.Driver.connect(Driver.java:167) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:15) というエラーが出てしまいます。原因がわかる方がおられましたら、ご指導のほどよろしくお願いいたします。

  • SQLサーバーに接続させたい(JSP使用)

    宜しくお願いします。 現在 JSP + TOMCAT + APACHE + WIN2000SERVER + SQLServerで タイトルのようなことを実現しようとしています。 本や、WEBでしらべてみると MySQLをつかった例が多く、 それをマネて多分もうちょっとで実現できる というところまできていると思うのですが。。 MySQLをつかった例は、 Class.forName("org.gjt.mm.mysql.Driver"); Connection db = DriverManager.getConnection("jdbc:mysql://localhost/[DB名]?user=sa&password="); となっており、 ドライバ名の「mysql」の部分をSQLサーバー用のドライバに 変更すればつながるとおもっているのですが、 ドライバ名が分からず困っております。 (ユーザIDやパスワードはSQLサーバ用に変更しています) 「sqlserver」「odbc」そのほかDSN名などもためしてみたのですが やはりエラーとなってしまいます。 (もしかしてドライバの呼び出し方がおかしいのでしょうか? Class.forName("org.gjt.mm.mysql.Driver"); の「org」や「gjt」などの意味は実は分かってないのです・・。) 何かお気づきの方が居られましたら ご教授ください宜しくお願いします。

    • ベストアンサー
    • Java
  • TomcatのJDBC連携について

    TomcatのJDBC連携について javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null' というエラーが消えず、知恵をお貸しください。 他にも同様のケースについて調べては見たのですが解決しません。 ■環境 Windows XP SP3 Eclipse3.6(Pleiades All in One 3.6.0.20100623) apache-tomcat-5.5.29 mysql-essential-5.1.48 ■設定 ■server.xml に下記を追加 <Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.j2ee.server:Test"> </Context> ■Tomcat 5.5/conf/Catalina/localhost/Test.xml に下記を記載 <Context docBase="${catalina.home}/server/webapps/test" privileged="true" antiResourceLocking="false" antiJARLocking="false"> <Resource name="jdbc/MySQL_JDBC" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis" username="**" password="**" maxActive="20" maxIdle="30" maxWait="1800"/> </Context> ■Webアプリケーション配下の web.xmlに下記を追加 <resource-ref> <res-ref-name>jdbc/MySQL_JDBC</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ■JSPソースに下記を記載 jdbc.jsp <% InitialContext initCon = new InitialContext(); DataSource ds = (DataSource) initCon.lookup("java:comp/env/jdbc/MySQL_JDBC"); Connection con = ds.getConnection(); Statement stmt = con.createStatement(); ResultSet result = stmt.executeQuery("select * from mytable;"); while (result.next()) { 表示処理 } con.close(); initCon.close(); %> 別途作成した下記JSPではデータ取得はできています。 <% Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/test?" + "user=tester&password=tester&useUnicode=true&characterEncoding=Shift_JIS"); Statement st=conn.createStatement(); ResultSet res = st.executeQuery("select * from mytable");

    • ベストアンサー
    • Java
  • JDBCドライバがない?

    PostgreSQLを使ったJavaアプリケーションをつくり、接続テストをしたところ、Tomcatのエラーで、HTTPステータス500となりました。 メッセージ: 「Cannot create JDBC driver of class '' for connect URL 'null'」 原因 org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 原因 java.sql.SQLException: No suitable driver java.sql.DriverManager.getDriver(DriverManager.java:243) と表示されますので、JDBCのclassがないことが原因のようですが、どこを調べればよいかわかりません。 初心者です。よろしくご教授ください。 環境は次のとおりです。 OS:Linux(CentOS5) Tomcat5.5.28 PostgreSQL8.2.14 JDBCドライバ:postgresql-8.2-510.jdbc3.jar /var/webapps/tomcat/common/libに入れてあります。 環境変数のPATHの指定してあります。