Java プログラムメモ


トップ

Tomcat でコネクションプール

Tomcat のコネクションプールは Commons-dbcp と Commons-pool によって実現されています。jar は CATALINA_HOME/common/lib にあります。
設定は CATALINA_HOME/conf/server.xml で行います。 Oracle の場合の XML の設定例と Java のソース記述例を書きます。

server.xml 記述例(5.0まで)

<Context path="/test" reloadable="false" docBase="test.war" autoDeploy="true"> <Resource name="jdbc/oracle" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/oracle"> <parameter> <name>username</name> <value>test</value> </parameter> <parameter> <name>password</name> <value>test-password</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@l27.0.0.1:1521:TEST</value> </parameter> <parameter> <name>maxActive</name> <value>20</value> </parameter> <parameter> <name>maxIdle</name> <value>10</value> </parameter> </ResourceParams> </Context>

※Tomcat の 5.5 より設定方法が変更になりました。

server.xml 記述例(5.5以降)

<Context path="/test" reloadable="false" docBase="test.war" autoDeploy="true"> <Resource name="jdbc/oracle" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:TEST" username="test" password="test-password" /> </Context>

Java 記述例

try { Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle"); Connection conn = ds.getConnection(); } catch (NamingException e) { e.printStackTrace(); }

取得した Connection,Statement,ResultSet は確実に close しなければ行けません。 close しないとリークとなり、再利用されなくなります。 この問題を回避するには以下の記述を追加すると、放置された Connection を再度有効にしてくれます。

<parameter> <name>removeAbandoned</name> <value>true</value> </parameter>


SEO [PR] おまとめローン Windows7 冷え性対策 動画 掲示板 レンタルサーバー ライブチャット SEO