dT*blog

design and programming

Tomcat5.5 で DataSource を使う

これまで eclipse で製造していたWebアプリケーションを、Profiler にかけるため、NetBeans に必死で移行。その結果、DataSource でコケる。

javax.servlet.ServletException:
Cannot create JDBC driver of class '' for connect URL 'null'

やっぱり設定をコピペするだけでは、動いてくれないらしい。ううう。

原因は Tomcat にあり。これまで Tomcat5.0 で開発していたのだけれども、NetBeans5.0 にバンドルされていたのは Tomcat5.5 だった。「0.5くらいなら大丈夫だべ」と思って強気で攻めたんだけど、だいぶ違うみたいでして。トム猫さん、頼むよ。

具体的には、JNDI リソースの指定方法が変わった。設定は、<ResourceParams> タグを使わず、<Resource> タグの属性として指定しなければいけなくなったようだ。

以下、設定のサンプル。

まずは、Tomcat5.0系の場合。(Postgresql に接続する場合)

<Resource name="jdbc/deftrash" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/deftrash">
    <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
        <name>driverClassName</name>
        <value>org.postgresql.Driver</value>
    </parameter>
    <parameter>
        <name>url</name>
        <value>jdbc:postgresql://192.168.0.10:5432/deftrash</value>
    </parameter>
    <parameter>
        <name>username</name>
        <value>postgres</value>
    </parameter>
    <parameter>
        <name>password</name>
        <value>password</value>
    </parameter>
    <parameter>
        <name>maxActive</name>
        <value>10</value>
    </parameter>
    <parameter>
        <name>maxIdle</name>
        <value>10</value>
    </parameter>
    <parameter>
        <name>maxWait</name>
        <value>180000</value>
    </parameter>
    <parameter>
        <name>removeAbandoned</name>
        <value>true</value>
    </parameter>
    <parameter>
        <name>removeAbandonedTimeout</name>
        <value>60</value>
    </parameter>
    <parameter>
        <name>logAbandoned</name>
        <value>true</value>
    </parameter>
</ResourceParams>

これを Tomcat5.5系に移植する場合は、以下のようにしなければならない。

<Resource name="jdbc/deftrash"
          auth="Container"
          type="javax.sql.DataSource"
          factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
          driverClassName="org.postgresql.Driver"
          url="jdbc:postgresql://192.168.0.10:5432/deftrash"
          username="postgres"
          password="password"
          maxActive="10"
          maxIdle="10"
          maxWait="180000"
          removeAbandoned="true"
          removeAbandonedTimeout="60"
          logAbandoned="true" />

ソースとしてはスッキリするけれども、気持ちはスッキリしない。どうして変えちゃうかなあ。地味すぎるし。これで数時間ほど無為に過ごしてしまったので、ちょっとご機嫌ナナメです。うーん。

Posted by dT by 20:54

トラックバック

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt/mt-tb.cgi/316

コメント




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30