Trasis Inc.

渋谷拠点のシステム開発会社

tomcatでDB接続

Windows 環境において、tomcat で PostgreSQL に JNDI 経由で接続する手順をまとめた。

導入環境
tomcat インストールディレクトリ c:/usr/apache-tomcat-5.5.25
webapp ディレクトリ /home/webapps/test/WebContent
webapp を公開するパス /test

1. postgresql jdbc ドライバのインストール

  • PostgreSQL JDBC ドライバのダウンロードサイト から、使用している PostgreSQL サーバと同じバージョンの JDBC ドライバをダウンロードする。
  • 自分の場合は postgresql-8.2-508.jdbc4.jar をダウンロードした。
  • postgresql-8.2-508.jdbc4.jar を C:\usr\apache-tomcat-5.5.25\common\lib\ に置く。

2. context.xml 設定

apache-tomcat-5.5.25/conf/Catalina/localhost/test.xml を、次のような内容で作成する。

<Context path="/test" reloadable="true"
docBase="/home/webapps/test/WebContent"
workDir="/home/webapps/test/WebContent/WEB-INF/work">
<Resource name="jdbc/default" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/testdb"
username="foo" password="bar"
maxActive="4" maxIdle="10" maxWait="-1"/>
</Context>

Eclipse All-In-One での設定方法

Eclipse All-In-One を使っている場合、プロジェクトのプロパティの「Tomcat」を開き、「その他の情報」のところへ次のように入力するとよい。

<Resource name="jdbc/default" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/testdb"
username="foo" password="bar"
maxActive="4" maxIdle="10" maxWait="-1"/>

3. web.xml 設定

/home/webapps/test/WebContent/web.xml に次の記述を追加する。

<resource-ref>
<res-ref-name>jdbc/default</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

4. プログラムからの呼び出し

Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/default");
Connection conn = ds.getConnection();
try {
// ここで SQL 実行
} finally {
conn.close();
}