• 締切済み

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設定をするにはどうしたらいいのでしょうか? 申し訳ありませんが、ご回答よろしく御願いします。

みんなの回答

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

server.xml の GlobalNamingResources 要素中にDBCPの設定を書けば良いのでは? http://www.javaroad.jp/opensource/js_tomcat8.htm

全文を見る
すると、全ての回答が全文表示されます。

関連する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
  • 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>

  • ApacheとTomcat連携後DocumentRootはどう設定しますか?

    Apache,Tomcatをmod_jk2で連携できたのですが、 /usr/local/tomcat4/webapps/test/index.jsp のページをhttp://www.***.com/test/ではなく、 http://www.***.com/で表示したいのですが、 どこで設定すればよいでしょうか? 以外にこれについて書かれているサイトがなく困っています。 server.xmlに以下を書いてTomcat,Apacheを再起動しても駄目でした。 <Context path="" docBase="test" debug="0" reloadable="true"/> なので、Apacheで設定するのかと思いhttpd.confに 以下を書いてみましたが駄目でした。 <IfModule mod_alias.c> Alias / "/usr/local/tomcat4/webapps/test" <Directory "/usr/local/tomcat4/webapps/test"> Options FollowSymLinks MultiViews </Directory> 環境はRedHat9です。よろしくおねがいします。

    • ベストアンサー
    • Java
  • META-INFフォルダの置き場所について

    おはようございます。少し前にJavaでウエブ上で動作するスケジュールを作成していたのですが、前まではwebappsフォルダの中のkaisyaフォルダの中にMETA-INFフォルダを作って、その中にcontext.xmlを入れていたのですが、webappsフォルダの中に、練習フォルダやサンプルコードを集めたフォルダなどが散らばってまして、整理をし、MyFolderという名前のフォルダを作り、その中にまとめました。前までは、webapps/kaisyaだったのですが、整頓後はwebapps/MyFolder/Original/kaisyaになりました。 移動後、http://localhost:8080/MyFolder/Orijinal/kaisya/schedule/toppage.jspを実行したら、「名前 jdbc はこのコンテキストにバインドされていません」というエラーになりまして、context.xmlの中の、 <Context displayName="Kaisya" docBase="kaisya" path="/kaisya" reloadable="true">のところを、 <Context displayName="kaisya" docBase="MyFolder/Orijinal/kaisya" path="/MyFolder/Orijinal/kaisya" reloadable="true">に変更して、再び実行してみましたが、やはり同じエラーになりました。 それで、META-INFフォルダを、MyFolderフォルダの中に移動させ、 context.xmlの中の一部分を、 <Context displayName="MyFolder" docBase="MyFolder" path="/MyFolder" reloadable="true">に変更して、 実行しましたら今度はうまくいきました。 META-INFフォルダを、kaisyaフォルダに入れたまま、アプリケーションを動作させる方法があれば、教えてはいただけないでしょうか。 環境は、windows vista にJava SE6 UPDATE4 です。 トムキャット6.0.16、ポストグレスキューエル8.3を使っています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 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で合ってると思うのですが、他に何かおかしいところがあるでしょうか。 また他に調べるべき点はどのようなところでしょうか。 どうぞよろしくご教授ください。

  • Tomcat4.1.31でのserver.xmlの<Context>の追加について

    環境:OS:win2k Tomcat4.1.31+j2sdk1.4.2_05 eclipse3.0.1 E:\eclipse_project\MyProject以下で作業しています。 参考書籍:JavaWebプログラミング徹底入門(技術評論社) 環境変数などの設定もすませ、http://localhost:8080/index.jspも見れて、http://localhost:8080/examples/servlet/HelloWorldExampleなどのサーブレット・jspのサンプルなども全て正常に動きます。 server.xmlの<!-- Tomcat Root Context -->のすぐ下の行に <Context path="/rucho" reloadable="true" docBase="E:/eclipse_project/MyProject" debug="0" crossContext="true"/> と追加して再起動して、サンプルのクラスをコピーしても、 正常に表示されません。http404エラーが出ます。 他のサーブレットクラスや、本のサンプルをコピーしても同様です。 また、NO,1091223の件を参考にマネージャーから パス: /rucho ディレクトリのURL:file:E:/eclipse_project/MyProject としてもだめでした。 tomcat自体を入れ直してみたりもしましたが、だめでした。 E:/eclipse_project/MyProject/jspにindex.jspを置くと問題なく表示されます。 さらに、本に付録として付いていたTomcat4.0.6を入れて、 server.xmlに全く同じContextタグを追加したら、 今度は何の問題もなく意図通りの設定が反映されて動作しました。 一体何が悪いのか、どなたご教授願えないでしょうか?

    • ベストアンサー
    • Java
  • Tomcat Apache 新規アプリケーションの追加

    RedHat 7.2 apache_1.3.27 tomcat-4.1.24 jakarta-tomcat-connectors-jk2-2.0.1 を使用し新規にアプリケーションを作成しようと思っているのですが 新規に作成したディレクトリを認識させることができません apache/conf/workers2.propertiesに [uri:/新規作成ディレクトリ] [uri:/新規作成ディレクトリ/*] を追加して、 servlet.xmlにも <context path="/新規作成ディレクトリ docBase="新規作成ディレクトリ" debug="0" reloadable="true"crossContext=true" > </context>と追加しました localhost/新規ディレクトリ/test.html と指定しましても web上に Https Status 404 が出てしまい、 servletやHtmlが表示されません ちなみにデフォルトのexamples/だと表示されます。 workres2.propertiesに追記するのに不足があると思い、色々と試しているのですが うまくいきません。 どなたか知恵をかして頂けないでしょうか 宜しくお願い致します。

    • ベストアンサー
    • Java
  • 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
  • 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で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(); -------------------------------------------------------- どうか宜しくお願い致します。