街中で見かけて「グッときた人」の思い出

お世話になります。

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で合ってると思うのですが、他に何かおかしいところがあるでしょうか。

また他に調べるべき点はどのようなところでしょうか。

どうぞよろしくご教授ください。

A 回答 (1件)

web.xmlには、<resource-ref>要素を用いてデータソースの登録がなされているのでしょうか?



「コネクションプーリング」
http://programnet.hp.infoseek.co.jp/practicaldb/ …

それでもダメなようでしたら、lookupメソッドの引数を、変数「dsString」を用いずに直接、文字列「"java:comp/env/jdbc/hoge"」としてみてください。

「JavaでHello World JDBC (データソース)編」
http://www.hellohiro.com/datasource.htm
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!