• ベストアンサー

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
  • 回答数6
  • ありがとう数8

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

  • ベストアンサー
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.5

> ■conf\server.xml <host>タグ下に回答番号4の補足のソースを入れ実行 > 結果:tomcat起動せず Tomcatが起動しない事から、Tomcatの設定ファイルに誤りがある事が疑われます。 コーンソールログやlogsディレクトリ以下のログファイルに情報があるかも しれませんので、確認してみて下さい。 Contextの書き方は、みた所間違いはなさそうです。 Contextタグをserver.xml内に書く場合は、 <Host>タグと、</Host>の間に置きましょう。 > ■conf\Catalina\localhost\context.xmlを作成し回答番号3の補則のソースを入れ実行 > 結果:jspファイル実行するも同じエラーメッセージ Context設定ファイルは、 「conf\Catalina\localhost\」以下に配置する事も出来ますが、 server.xmlと両方に書いてはいけません、設定が重複しますので。 # Context設定ファイルを「conf\Catalina\localhost\」以下に配置する場合、 # ファイル名は、ウェブアプリケーション名.xmlにする気がするけど、 # これは、今回の件とは関係ないでしょう。 > ■conf\context.xml(もともとあったもの)を編集回答番号3の補則の形に編集し実行 > 結果:urlにアクセスすると以下のメッセージが表示される 説明 The requested resource () is not available. これは、JSPに記述ミスがあるか、 遷移先のJSPが存在しないかの可能性があります。 どちらのケースかは、処理を追いかけるなどして、調べてください。

swqplnndc
質問者

お礼

度々書込みありがとうございます! おかげさまで何とかデータベースに登録までできました! >コーンソールログやlogsディレクトリ以下のログファイルに情報があるかも 仰るとおりここにヒントがありました。 2008/12/15 22:16:28 org.apache.catalina.startup.HostConfig deployDescriptor 警告: A docBase C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\sample inside the host appBase has been specified, and will be ignored と一つだけ警告が出ていたので 違うアプリケーションのdeployDescriptorが読み込まれている? と予想し、Tomcat 6.0\conf\Catalina\localhost\sample.xmlを確認 したところC:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\sampleのアドレスを発見。 もしやと思いご助言頂いたアプリケーション名.xml としたところ動きました! しかしログファイルの警告が増えてしまいましたが^^; 2008/12/15 22:16:28 org.apache.catalina.startup.HostConfig deployDescriptor 警告: A docBase C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\wl_jsp inside the host appBase has been specified, and will be ignored こちらに関してはまた自分で調べてみます。 長々と付き合せてしまい恐縮です。 今回は本当に色々勉強になりました。 ありがとうございました!

その他の回答 (5)

  • ecogilis
  • ベストアンサー率60% (12/20)
回答No.6

こんにちわ。 なんだか誤りがたくさん出てきた見たいですね。 問題が複数潜んでいてあちらを直してもこちらがだめでを繰り返しているようなきもしてきました。 ですので一度リセットして、ひとつずつはじめていったらどうでしょうか。 まずは、インストール直後の最初の状態に戻して、Tomcatだけを起動する。 起動したら、次はWEBアプリケーションを追加してみる。 この時WEBアプリケーションには、htmlだけをおいて、アクセスできるようになるまで、Contextを調整する。 アクセスできるようになったら、DBアクセスを行わない、表示だけを行うjspを配置してみる。 jspで表示ができたら、jspにJDBC関連の記述を行うと同時に、JDBCの設定をContext内に追加し、JDBCドライバの配置をしてみて、正しく動作するまで調整。 この時、Tomcatのインストール先にあるlogファイルを必ず見て、エラーが何の要素なのかを見る。 エラー内容から問題個所が推測できるようなら、とりあえず修正を試してしてみる。だめなら、そのエラーを質問。 できる限り、一歩一歩作業をして、つまったら全設定を見直して、Tomcat再起動を繰り返して行くのがいい気がします。 そうすれば、どこまで正しいのかがはっきりします。

swqplnndc
質問者

お礼

度々書込みありがとうございます! >できる限り、一歩一歩作業をして、つまったら全設定を見直して、Tomcat再起動を繰り返して行くのがいい気がします。 そうすれば、どこまで正しいのかがはっきりします。 なるほど!プログラムの作り方がなんとなくわかりました。 デバックと言うやつですね。勉強になります。 正直、最後の方は自分でも何をどうしたか デフォルトの状態がどうだったか把握が厳しい状況でした。 コピーしまくったbackupファイルを整理しなければ^^; おかげさまで何とかデータベースの登録まで できるようになりました! 書込み頂きありがとうございました!

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.4

追記です。 手前で使用しているContext の書き方のサンプルです。 参考にしてみて下さい。 ---------------------------------------------------------------------- <Context path="/hogehoge" reloadable="true" docBase="D:\var\webapps\hogehoge" workDir="D:\var\webapps\hogehoge\work" >      <!-- データソースリソースjdbc/hogehoge_test を作成 -->   <Resource name="jdbc/hogehoge_test" auth="Container"       type="javax.sql.DataSource" />      <!-- jdbc/hogehoge_testにパラメータを指定 -->   <ResourceParams name="jdbc/hogehoge_test">          <!-- データベース接続用ユーザ名をhogehogeと指定 -->     <parameter>       <name>username</name>       <value>hogehoge</value>     </parameter>          <!-- データベース接続用パスワードをhogehogeと指定 -->     <parameter>       <name>password</name>       <value>hogehoge</value>     </parameter>     <parameter>       <name>driverClassName</name>       <value>org.gjt.mm.mysql.Driver</value>     </parameter>          <!-- 接続先データベース名hogehoge_testを指定 -->     <parameter>       <name>url</name>       <value>jdbc:mysql://localhost/hogehoge_test</value>     </parameter>     <parameter>       <name>maxActive</name>       <value>10</value>     </parameter>     <parameter>       <name>maxIdle</name>       <value>5</value>     </parameter>     <parameter>       <name>maxWait</name>       <value>10000</value>     </parameter>   </ResourceParams> </Context> </Host> ---------------------------------------------------------------------- > <Resource name="jdbc/library" auth="Container" > type="javax.sql.DataSource" /> > > <ResourceParams name="jdbc/Wl_Jsp"> Resourceのname属性と、ResourceParamsのname属性は、関連付けする場合は、 同じ名前を指定しましょう。 > <value>jdbc:mysql://localhost/wl_jsp?useUnicode=true&characterEncoding=Windows-31J</value> &記号はxml中ではエスケープしてあげないと遺憾ような気がします。 「&」を「&amp;」に置き換えて、 <value>jdbc:mysql://localhost/wl_jsp?useUnicode=true&amp;characterEncoding=Windows-31J</value> じゃないかな。 > server.xmlについてなんですが > <Context path="" ~を追加した際 > tomcatが立ち上がらなくなると言う現象がありました。 servlet.xmlに記述間違えがあると、Tomcatが起動しない場合があります。

swqplnndc
質問者

お礼

ソースのサンプルありがとうございます! 参考のソースを元に検証してみましたが うまくいきませんでした。 検証方法は以下の通りです。 ■conf\server.xml <host>タグ下に回答番号4の補足のソースを入れ実行 結果:tomcat起動せず ■conf\Catalina\localhost\context.xmlを作成し回答番号3の補則のソースを入れ実行 結果:jspファイル実行するも同じエラーメッセージ ■conf\context.xml(もともとあったもの)を編集回答番号3の補則の形に編集し実行 結果:urlにアクセスすると以下のメッセージが表示される 説明 The requested resource () is not available. どこか間違っている箇所はありますでしょうか? また何か気づかれた点などありましたら 是非書込みをお願い致します。

swqplnndc
質問者

補足

server.xmlの<host>下に追加したソースです。 <Context path="/wl_jsp" docBase="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\wl_jsp" reloadable="true" workDir="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\wl_jsp\chap6"> <Resource name="jdbc/Wl_Jsp" auth="Container" type="javax.sql.DataSource" /> <ResourceParams name="jdbc/Wl_Jsp"> <parameter> <name>driverClassName</name> <value>org.git.mm.mysql.Driver</value> </parameter> <parameter> <name>username</name> <value></value> </parameter> <parameter> <name>password</name> <value></value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost/wl_jsp?useUnicode=true&amp;characterEncoding=Windows-31J</value> </parameter> <parameter>        <name>maxActive</name>        <value>4</value>      </parameter>      <parameter>        <name>maxIdle</name>        <value>2</value>      </parameter>      <parameter>        <name>maxWait</name>        <value>5000</value>      </parameter> </ResourceParams> </Context>

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.3

JavaSE とJavaEEを混同されているようです。 よく違いを調べましょう。 > >JavaEEの設定ファイルを配備するディレクトリは、 > META-INF の配下ではないはずです。 > 申し訳ありません。書き忘れましたが > 当方はJavaSEを使用しています。 > 本に関してはこちらを進めているのですが JavaSEでの設定ファイルの場所は、META-INF配下ですが、 TomcatはJavaEEの実装になりますから、 Tomcat上で動作するアプリケーションも当然JavaEEの仕様に従う必要があります。 ですから、この場合、JavaSEのつもりで設定ファイルをMETA-INF配下に配備してあるのは、 間違っている可能性が大です。 Tomcat上で動作するアプリケーションの ファイル配置構造を確認して下さい。 > EEかSEかの確認は > 以下のファイルを開き確認しました。 > > C:\Program Files\Java\jdk1.6.0_10\LICENSE.rtf > --------------------------------------------------- > for the JAVA SE DEVELOPMENT KIT (JDK), VERSION 6 > --------------------------------------------------- についてですが、 Tomcatは、JavaSE上で動作する、Servletコンテナですから、 当然、JavaSEが入ってないと動きません。 が、Tomcat自身がJavaEEの実装となりますから、 この場合、Tomcat上で動かすアプリケーションはJavaEEのアプリケーションとなります。 この違いがわかりますか?

swqplnndc
質問者

お礼

初心者の質問に付き合って頂き ありがとうございます! >Tomcat上で動作するアプリケーションも当然JavaEEの仕様に従う必要があります。 >Tomcatは、JavaSE上で動作する、Servletコンテナですから、 当然、JavaSEが入ってないと動きません。 が、~ なるほど。恥ずかしながら そのあたりはまったく意識しておりませんでした。 勉強になります。 ちょっと自分なりに調べた感じをまとめてみますので また間違っていたらご指導願いたいです! ---------------------------------------------------- JAVA EEはJAVA SEを元に作られ JAVA SEにサーバ関連のライブラリを追加したものである。 当方の環境としてはJAVA SEを動かしながら tomcat6内に標準装備されているJAVA EE用ライブラリを 使用している。よって構築環境はJAVA EEに従うものとする。 ---------------------------------------------------- server.xmlについても提示頂いたソースを元に 少しだけテストしてみたのですが まだ十分な検証ができておりませんので また結果をこちらに報告させて頂きます。 丁寧な解説ありがとうございます!

swqplnndc
質問者

補足

conf\context.xmlにあったソースが以下です。 --------------------------------------------- <Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> --> </Context> --------------------------------------------- それを以下のように編集しテストしました。 --------------------------------------------- <Context path="/wl_jsp" docBase="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\wl_jsp" reloadable="true" workDir="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\wl_jsp\chap6"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> --> <Resource name="jdbc/Wl_Jsp" auth="Container" type="javax.sql.DataSource" /> <ResourceParams name="jdbc/Wl_Jsp"> <parameter> <name>driverClassName</name> <value>org.git.mm.mysql.Driver</value> </parameter> <parameter> <name>username</name> <value></value> </parameter> <parameter> <name>password</name> <value></value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost/wl_jsp?useUnicode=true&amp;characterEncoding=Windows-31J</value> </parameter> <parameter>        <name>maxActive</name>        <value>4</value>      </parameter>      <parameter>        <name>maxIdle</name>        <value>2</value>      </parameter>      <parameter>        <name>maxWait</name>        <value>5000</value>      </parameter> </ResourceParams> </Context> ---------------------------------------------

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.2

●apacheとtomcatの連携 今回のJDBCの設定に関しましては、 apacheとtomcatの連携の設定は関係ないでしょう。 ●アプリケーション設定ファイル > アプリケーションルート・META-INF/context.xml JavaEEの設定ファイルを配備するディレクトリは、 META-INF の配下ではないはずです。 参考にしている本をよく確認しましょう。 ●外部jarファイルの配置 > mysql-connector-java-5.1.7-bin.jarファイルについては > Toncat 6.0/common/libに保存せよと本にはありますが > commonディレクトリが無いためToncat 6.0/libに保存してあります。 これで正しいです。 tomcat 6.0の場合、外部jarファイルの配置は、 「%CATALINA_HOME%\lib」か、 または、 「アリケーションルート\WEB-INF\lib」です。 ●CLASSPATHの設定 > またCLASSPATHの設定も本にはありませんでしたが > ネットで色々調べていたらでてきましたので > 以下のように設定してみましたがだめでした。 JavaEEでは、環境変数CLASSPATHの設定は無効です。 Tomcat 起動時に、CLASSPATHは勝手にTomcatが上書きしますので、 残念ながら無効です。 今のところ、他には変な所は見当たりませんので、 上の項目を参考にチェックしてみて下さい。

swqplnndc
質問者

お礼

回答ありがとうございます! >apacheとtomcatの連携の設定は関係ないでしょう。 こちらなんですが色々調べている途中以下のページで http://www.amazon.co.jp/10%E6%97%A5%E3%81%A7%E3%81%8A%E3%81%BC%E3%81%88%E3%82%8BJSP-%E3%82%B5%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4-%E7%AC%AC2%E7%89%88-%E5%B1%B1%E7%94%B0-%E7%A5%A5%E5%AF%9B/dp/4798107328/ref=sr_1_18?ie=UTF8&s=books&qid=1229267983&sr=8-18 【Apache+Tomcat環境で付属のソースを実行すると、データベース関係のプログラムでJDBCエラーがでる】 との記述があり、バージョン違いですが そうなのかと思ってしまいました。 >JavaEEの設定ファイルを配備するディレクトリは、 META-INF の配下ではないはずです。 申し訳ありません。書き忘れましたが 当方はJavaSEを使用しています。 本に関してはこちらを進めているのですが http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%AF%E3%83%B3%E3%83%80%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%89%E3%81%B8%E3%81%84%E3%82%89%E3%81%A3%E3%81%97%E3%82%83%E3%81%84-JSP-%E3%82%B5%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E7%B7%A8-%E5%B1%B1%E7%94%B0-%E7%A5%A5%E5%AF%9B/dp/4798104914/ref=sr_1_2?ie=UTF8&s=books&qid=1229268405&sr=1-2 アプリケーション設定ファイルは Administratorで行っており当方では tomcat6のためAdministratorを使用できず こちらのP62を参考にしました。 http://www.amazon.co.jp/%E4%BB%8A%E6%97%A5%E3%81%8B%E3%82%89%E3%81%A4%E3%81%8B%E3%81%88%E3%82%8BJSP%EF%BC%86%E3%82%B5%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E9%9B%86-JavaSE6%EF%BC%8BTomcat6%E5%AF%BE%E5%BF%9C%E7%89%88-%E5%B1%B1%E7%94%B0-%E7%A5%A5%E5%AF%9B/dp/4798018759/ref=sr_1_1?ie=UTF8&s=books&qid=1229268279&sr=8-1 再度確認いたしましたが アプリケーションルート/META-INF/context.xml となっておりました。 せっかくお応え頂いたにも関わらず 当方の提示情報の不足があり申し訳ありません。 他にも確認することがあれば申し付け下さい。 また何かアドバイスがありましたらお願いします。

swqplnndc
質問者

補足

EEかSEかの確認は 以下のファイルを開き確認しました。 C:\Program Files\Java\jdk1.6.0_10\LICENSE.rtf --------------------------------------------------- for the JAVA SE DEVELOPMENT KIT (JDK), VERSION 6 ---------------------------------------------------

  • ecogilis
  • ベストアンサー率60% (12/20)
回答No.1

こんにちわ。 Resourceと、ResourceParams要素を一緒くたにしているせいでは。 ResourceParamsにJDBC接続URLの記載が無いといけないのに、ResourceParamsが無いので、接続URLがnullとして扱われてしまい。。。 と考えると、エラーメッセージにも納得できます。

swqplnndc
質問者

お礼

回答ありがとうございます! >ResourceParamsが無いので ResourceParamsで検索したところ %CATALINA_HOME%\conf\server.xmlの <Host>下に以下を追加するとありましたので 試してみましたがだめでした。 <!-- <Context path="" docBase="ROOT" debug="0"/> --> <Context path="/wl_jsp" docBase="wl_jsp" reloadable="true"> <Resource name="jdbc/library" auth="Container" type="javax.sql.DataSource" /> <ResourceParams name="jdbc/Wl_Jsp"> <parameter> <name>driverClassName</name> <value>org.git.mm.mysql.Driver</value> </parameter> <parameter> <name>username</name> <value></value> </parameter> <parameter> <name>password</name> <value></value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost/wl_jsp?useUnicode=true&characterEncoding=Windows-31J</value> </parameter> </ResourceParams> </Context> 追加するファイルが間違っているのでしょうか? 内容に間違いがありますか? また実行の際のjspソースも 補足にのせておきますので また何かありましたら書込みをお願いします。

swqplnndc
質問者

補足

お礼のserver.xmlについてなんですが <Context path="" ~を追加した際 tomcatが立ち上がらなくなると言う現象がありました。 以下実行の際のjspファイルです。 <%@ page contentType="text/html;charset=Windows-31J" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <fmt:requestEncoding value="Windows-31J" /> <html> <head> <title>データベース登録</title> </head> <body> <form method="POST" action="update.jsp"> <table border="0"> <tr> <th align="right">書名:</th> <td><input type="text" name="title" size="40" maxlength="50" /></td> </tr> <tr> <th align="right">出版社:</th> <td><input type="text" name="publish" size="10" maxlength="15" /></td> </tr> <tr> <th align="right">価格:</th> <td><input type="text" name="price" size="4" maxlength="5" />円</td> </tr> <tr> <th align="right">刊行日:</th> <td><input type="text" name="publishDate" size="12" maxlength="10" /></td> </tr> <tr> <td colspan="2"> <input type="submit" name="sbm" value="登録" /> <input type="reset" value="クリア" /> </td> </tr> </table> </form> <c:if test="${not empty param.sbm}"> <c:catch var="err"> <sql:setDataSource var="db" dataSource="jdbc/Wl_Jsp" /> <sql:update dataSource="${db}"> INSERT INTO books(title,publish,price,publishDate) VALUES(?,?,?,?) <sql:param value="${param.title}" /> <sql:param value="${param.publish}" /> <sql:param value="${param.price}" /> <sql:param value="${param.publishDate}" /> </sql:update> 新規登録に成功しました </c:catch> <c:if test="${not empty err}"> ${err} </c:if> </c:if> </body> </html>

関連するQ&A

  • 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
  • tomcatとapacheの連携

    tomcat4.0.2とapache1.3.26でwindows2000で連携させようとして↓ここを参考にインストール、設定しました。 http://www5b.biglobe.ne.jp/~y-tomy/tomcat/fig_include.html しかし、examples/servlet/はサンプル全て表示されるのですが、examples/jsp/はエラーが出て表示されません。どなたか原因がわかるかた教えてください。 エラーの内容 Apache Tomcat/4.0.2 - HTTP Status 500 - Internal Server Error javax.servlet.ServletException: サーブレット jsp のServlet.init()が例外を投げました at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:653) root cause java.lang.NoSuchMethodError: javax.servlet.ServletContext.getResourcePaths(Ljava/lang/String;)Ljava/util/Set; (エラーの内容長いため途中省略)

    • ベストアンサー
    • Java
  • Tomcat6のコネクションプーリングについて

    Tomcat6のコネクションプーリングについて 現在、以下の環境で開発を行っているのですが、 データソースからConnectionを取得できていない状況です。 過去に同様の内容が記載されていたのですが、 内容が理解できず投稿させていただいております。 【フォルダ構成】 test  |  |--META-INF  |   |  |   --context.xml  |  |--WEB-INF     |      --web.xml 【環境】 Windows XP Pro Eclipse3.3.2 apache2.2 tomcat6.0 jdk1.6.0_18 mysql-connector-java-5.1.12-bin.jar Struts2 以下に、context.xml、web.xml及び、サーブレットのコードを記載します ■web.xml=========== <?xml version="1.0" encoding="UTF-8"?> ~~(抜粋)~~ <resource-ref> <res-ref-name>test</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> ■context.xml======= <?xml version="1.0" encoding="UTF-8"?> <Context displayName="test" docBase="test" path="/test" reloadable="false"> <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource" username="root" password="root" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/test?useUnicode=true&amp;characterEncoding=UTF-8" maxActive="4" maxWait="5000" maxIdle="2" validationQuery="select cont(*) from db_fuzoku" /> </Context> ■サーブレットコード(抜粋)===== public class test_Dao { DataSource ds; public ArrayList select(){ ArrayList list = new ArrayList(); try { // 初期コンテキストを取得 Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); // ルックアップしてデータソースを取得 ds = (DataSource) envCtx.lookup("jdbc/test"); } catch (Exception e) { e.printStackTrace(); } Connection con = null; Statement stmt = null; try { // データソースからConnectionを取得 con = ds.getConnection(); ==================== 以上、よろしくお願いします。

  • JNDIについて

    緊急で困っています。宜しくお願いします。 JNDIを使ってDB接続しようとしているのですがエラーが出て接続できません。 ■発生箇所---------------------------------------- public static Connection getConnection() { Connection con = null; try { InitialContext context = new InitialContext(); DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/MySQL"); con = ds.getConnection(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return con; } のlookupの箇所です。 ------------------------------------------ server.xml <Context>タグの中に <Resource name="jdbc/MySQL" auth="Container" type="javax.sql.Datasource"> <ResourceParams name="jdbc/MySQL"> <parameter>    <name>factory</name>   <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <!-- Max Active <parameter> <name>maxActive</name> <value>100</value> </parameter> --> <!-- Max Idle <parameter> <name>maxIdle</name> <value>30</value> </parameter> --> <!-- Max Wait <parameter> <name>maxWait</name> <value>10000</value> </parameter> --> <parameter> <name>username</name> <value>***</value> </parameter> <parameter> <name>password</name> <value>***</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost/DB名?useUnicode=true&amp;characterEncording=Windows-31J</value> </parameter> </ResourceParams> </Resource> </Context> ---------------------------------------------- web.xml <resource-ref> <res-ref-name>jdbc/MySQL</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ---------------------------------------------------- 必要なライブラリはTOMCAT_HOME/common/libに配置しています。 ------------エラーログ javax.naming.NamingException: Cannot create resource instance at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:132) at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source) at org.apache.naming.NamingContext.lookup(NamingContext.java:791) at org.apache.naming.NamingContext.lookup(NamingContext.java:138) at org.apache.naming.NamingContext.lookup(NamingContext.java:779) at org.apache.naming.NamingContext.lookup(NamingContext.java:138) at org.apache.naming.NamingContext.lookup(NamingContext.java:779) at org.apache.naming.NamingContext.lookup(NamingContext.java:138) at org.apache.naming.NamingContext.lookup(NamingContext.java:779) at org.apache.naming.NamingContext.lookup(NamingContext.java:151) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:136) at javax.naming.InitialContext.lookup(Unknown Source) at com.llc.aison.seikei.util.DBUtil.getConnection(DBUtil.java:18) 環境: Tomcat5.0 mysql eclipse3.1.1 jdk1.4_12 以上宜しくお願いします。

    • ベストアンサー
    • Java
  • JNDIでDataDourceにNullが入ってしまう

    いつもお世話になっています。 JNDIを使ってDataSourceを取得しようと思っているのですがNullが返ってきてしまってかなりハマッてます。 ご指導頂けたらと思います。 設定は下記のようになっています。 環境: jdk:1.4.2_12 tomcat:5.0 Mysql:4.0.20a-nt server.xml-------------------------------------------------- <Context docBase="C:\Documents and Settings\ESC\workspace\SNS\.deployables\SNS" path="/SNS" reloadable="true"> <Resource name="jdbc/MySQL" auth="Container" type="javax.sql.Datasource" /> <ResourceParams name="jdbc/MySQL"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <!-- Max Active <parameter> <name>maxActive</name> <value>100</value> </parameter> --> <!-- Max Idle <parameter> <name>maxIdle</name> <value>30</value> </parameter> --> <!-- Max Wait <parameter> <name>maxWait</name> <value>10000</value> </parameter> --> <parameter> <name>username</name> <value>****</value> </parameter> <parameter> <name>password</name> <value>****</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost/dbname?useUnicode=true&amp;characterEncording=Windows-31J</value> </parameter> </ResourceParams> </Context> web.xml-------------------------------------------------- <resource-ref> <res-ref-name>jdbc/MySQL</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> java側-------------------------------------------------- InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQL"); connection = ds.getConnection(); -------------------------------------------------------- どうか宜しくお願い致します。

  • 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の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
  • eclipseでのJDBCについて

    eclipseのMySQLJDBCの外部接続に関して全く分からず手詰まりしているので、ご教授願いたいと思います。 プロジェクトの配下のweb.xmlにMySQLの接続情報を入力しました。一応ソースです。 web.xmlに <context-param> <param-name>jdbcDriver</param-name> <param-value>com.mysql.jdbc.Driver</param-value> <description>JDBC Driver</description> </context-param> <context-param> <param-name>jdbcUri</param-name> <param-value>jdbc:mysql://localhost:3306/airticket?useUnicode=true&amp; characterEncoding=sjis</param-value> <description>MySQL URI</description> </context-param> <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> を書いて、 会員登録をするクラスに、 try{ try{ //ドライバクラスをロード Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch(Exception ex) { } //データベースへ接続 String url = "jdbc:mysql:///airticket?useUnicode=true&characterEncoding=SJIS"; Connection con = DriverManager.getConnection(url); //ステートメントオブジェクトを生成 Statement stmt=con.createStatement(); String sql="insert into member(member_id,member_pass,family_name,first_name,birth_year,birth_month,birth_day,address,post_code,mail,"+"sex,home_tel,job) values('"+ member_id +"',"+ mempasslong +",'"+ family_name +"','"+ first_name +"',"+ birth_year +","+ birth_month +","+ birth_day +",'"+ address +"',"+ post_code +",'"+ mail +"',"+sexint+","+ home_tel +",'"+ job +"');"; int result=stmt.executeUpdate(sql);       stmt.executeBatch(); // データベースから切断 stmt.close(); con.close(); } catch (Exception e) { message = "登録失敗しました。"; request.setAttribute("message", message); return mapping.findForward("registererror"); } message = "登録完了しました。"; request.setAttribute("message", message); return mapping.findForward("success"); } } って書いてクラスからweb.xmlを参照してデータベース接続したいんですが、エラーが出ずに困っています。そもそもクラスからweb.xmlの情報を参照するやりかたはあるのですか?教えてください

  • Tomcat5.0でJNDI

    お世話になります。 Tomcat5.0で、JNDIを使ってコネクションプーリングを実現しようとしてますが、なかなかうまいこといきません。 コンテキストファイル(hoge.xml)の設定 前略 <Resource name="jdbc/hoge" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/hoge">   <parameter>     <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>   </parameter>   <parameter>     <name>driverClassName</name>     <value>com.mysql.jdbc.Driver</value>   </parameter>   <parameter>     <name>url</name>     <value>jdbc:mysql://localhost/hoge</value>   </parameter>   <parameter>     <name>username</name>     <value>hogeuser</value>   </parameter>   <parameter>     <name>password</name>     <value>hogepass</value>   </parameter> 中略 </ResourceParams> 後略 これを、トムキャットホーム\conf\Catalina\localhostに置いています。 Javaの方のソース String dsString = getServlet().getInitParameter("java:comp/env/jdbc/hoge"); InitialContext context = new InitialContext(); DataSource ds = (DataSource) context.lookup(dsString); Connection connection = ds.getConnection(); 実行すると、 名前 java:/comp/env/jdbc/hoge はこのコンテキストにバインドされていません という具合に怒られます。名前はjdbc/hogeで合ってると思うのですが、他に何かおかしいところがあるでしょうか。 また他に調べるべき点はどのようなところでしょうか。 どうぞよろしくご教授ください。

  • tomcat5.5 全コンテキスト共有のDBCP設定方法

    こんにちは。 Tomcat5.5のDBCP設定で悩んでいます。 調べた限りだとDBCP設定は、以下のように設定すると思います。 <Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true"> <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/> </Context> ただこの設定だと、webapps配下に配置する"DBTest"のみが対象となる 設定です。webapps配下に配置する全てのコンテキスト(アプリケーシ ョン)共有のDBCP設定をするにはどうしたらいいのでしょうか? 申し訳ありませんが、ご回答よろしく御願いします。