PostgreSQLのDataSourceを使った接続
PostgreSQL-8.1.3 + Tomcat-5.0.28 + J2SE Development Kit 5.0 Update 6
- Jarファイルのコピー
PostgreSQLのjdbc以下にある、
postgresql-8.1-405.jdbc.jar
を
$TOMCAT_HOME\common\lib
にコピー。
- XMLファイルの編集
$TOMCAT_HOME\conf\Catarina\localhost
以下にある
(Context名).xml
の
<Resource auth="Container" name="jdbc/mydb" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/mydb"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>url</name> <value>jdbc:postgresql://localhost:5432/mydb</value> </parameter> <parameter> <name>driverClassName</name> <value>org.postgresql.Driver</value> </parameter> <parameter> <name>username</name> <value>username</value> </parameter> <parameter> <name>password</name> <value>password</value> </parameter> <parameter> <name>maxIdle</name> <value>10</value> </parameter> <parameter> <name>maxActive</name> <value>10</value> </parameter> <parameter> <name>maxWait</name> <value>20000</value> </parameter> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter> <name>logAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <value>600</value> </parameter> </ResourceParams>
- データソースの登録
Tomcatのトップ画面で、
Tomcat Administration
のリンクから管理画面にログインする。
左側の
リソース>データソース
をクリック
右側の
データソース>Deta Source Actions>新しいデータソースの作成
を選択し、以下を入力する。
JNDI名 → jdbc/mydb データソース名 → jdbc:postgresql:mydb JDBCドライバクラス → org.postgresql.Driver ユーザ名 → username パスワード → password (以下略)
入力ができたら
保存>変更を反映
ボタンを押す。
- Javaソース
以下のようにアクセスする。
Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mydb"); conn = ds.getConnection(); stmt = conn.createStatement(); String sql = "SELECT count(*) FROM table"; rs = stmt.executeQuery(sql); if(rs.next()) { String count = rs.getString(1); System.out.println(count); } if(rs != null) { rs.close(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if(stmt != null) { stmt.close(); } if(conn != null) { conn.close(); } } catch (Exception e) {} }