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」属性の値と同じにして下さい。