6. DataSourceからConnectionを取得する
- 6.1. server.xmlへの設定
- 6.2. web.xmlへの設定
- 6.3. DataSourceの利用
6.1. server.xmlへの設定
J2EEにおいてデータベースに接続する場合は、java.sql.DriverManagerではなく「javax.sql.DataSource」を用いてConnectionを取得する方法が推奨されています。この節ではTomcatでDataSourceを用いる方法について説明します。
TomcatでDataSourceを用いるためには、まずTomcatの設定ファイルserver.xmlでの設定が必要です。
...
<Context path="/sample" docBase="/home/tomcat/sample" debug="0"
reloadable="true" crossContext="true">
<Logger ... />
<Resource name="jdbc/datasource" auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/datasource">
<parameter>
<name>username</name>
<value>postgres</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.postgresql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:postgresql:Training</value>
</parameter>
</ResourceParams>
</Context>
...
Webアプリケーションを定義した<Context>タグの内側に、<Resource>タグと<ResourceParams>タグを定義します。それぞれ他のリソースの定義にも使用できるものですが、ここではDataSourceの定義に使用します。なお定義したWebアプリケーションでのみ、DataSourceが使用可能となります。
まず<Resource>タグはリソースを定義するものです。「name」「auth」「type」属性を持ちますが、DataSourceを定義する場合には、name属性の他は例と同じにして下さい。name属性にはDataSourceにつける名前を指定します。
<ResourceParams>タグはリソースのパラメータを指定するものです。パラメータの指定には、<parameter>タグを使用します。<name>タグの値がパラメータ名で、<value>タグの値がパラメータの値に相当します。DataSourceを定義する場合に指定しなければならないパラメータは「username」「password」「driverClassName」「url」の4つです。それぞれ、「データベースに接続する際のユーザ名」「パスワード」「使用するJDBCドライバクラス名」「接続するデータベースのURL」を指定します。DriverManagerのgetConnectionメソッドで指定した値と同じものを指定します。なお指定するパラメータは使用するDataSourceの実装クラスによって異なってきます。Tomcatのデフォルトではこのようになっているだけですので、注意してください。
以上でserver.xmlへの設定は終了です。ただしデータベースへの接続はTomcatによって実行されますので、PostgreSQLのJDBCドライバを、Tomcatの「common\lib」ディレクトリに置いて下さい。
6.2. web.xmlへの設定
Webアプリケーションの設定ファイルweb.xmlに設定を行います。
...
</taglib>
<resource-ref>
<res-ref-name>jdbc/datasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER</res-auth>
</resource-ref>
</web-app>
リソースの定義は<resource-ref>タグで行います。<resource-ref>タグは<taglib>の次に定義してください。<resource-ref>には3つの子要素<res-ref-name><res-type><res-auth>が必要ですが、server.xmlの<Resource>タグで指定した「name」「type」「auth」属性の値と同じにして下さい。

