1 月 13
Tomcat6でコネクションプール(コネクションプーリング、Connection pooling)を使うことにしました。
動作環境
Windows XP Pro
eclipse 3.3.0 (Eclipse Java EE IDE for Web Developers)
Tomcat 6.0 (インストーラ:apache-tomcat-6.0.20.exe)
MySQL 5.0.77 (VmWare Linux上にインストール NAT接続)
構築方法
1.META-INF配下に、context.xmlを作成する。
<?xml version="1.0" encoding="UTF-8"?> <Context path="/struts2" docBase="struts2" debug="5" reloadable="true" crossContext="true"> <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" username="dbuser" password="dbpass" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.169.128:3306/dbname?autoReconnect=true" maxActive="20" maxWait="5000" maxIdle="20" /> </Context>
/struts2は、http://localhost:8080/struts2 というコンテキストで使用することを意味します。
2. MySQLのサイトからJDBCドライバを入手する。
入手したドライバ:mysql-connector-java-5.1.10.tar.gz
gzを展開すると、mysql-connector-java-5.1.10-bin.jarというライブラリが入っているので、このjarファイルを
${TOMCAT_HOME}/lib配下にコピーする。
3.ソースコードにLookupするコードを記述する
package test;
public class Test {
private DataSource testDs;
public String getDataSource() {
try {
InitialContext initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
testDs = (DataSource) envCtx.lookup("jdbc/TestDB");
} catch (Exception e) {
e.printStackTrace();
}
return "hello";
}
}
struts2で@Resourceアノテーションを使用すると、DataSourceがlookupできない(なぜ?)ため、
上記のようにContextから取得しています・・が、DataSourceはstaticで1回取得するだけなんでContext取得で十分ですね 
動作としても、一般的なコネクションプールの動作と同じで使える目処が立ちました。