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" />

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

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