Tomcat5.5でのDBコネクション再利用
Tomcat5.5のResourceの設定でremoveAbandoned を true にしておくと、待ち状態のコネクションを破棄して再利用する機能が有効になります。
(注意:これはコネクション破棄忘れの救済機能でも、ましてや破棄忘れを推奨する機能でもありません。破棄忘れはプログラムのバグとして修正されるべきです。)
server.xml ($TOMCAT_HOME/conf/Catalina/localhost以下のファイルにも書けるらしい):
... <省略> .. <Resource name="jdbc/xxxdb" auth="Container" type="javax.sql.DataSource" ... <省略> .. removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" /> ... <省略> ..
これはcommons-dbcp の機能です。Configuration - Commons DBCPに解説があります。
発動条件
- 空いているコネクション数が少なくなった。
- 待ち状態のコネクションがある。
- 待ち状態のコネクションが指定した待ち時間(removeAbandonedTimeoutの指定値/デフォルト300秒)以上待っている。
なので、コネクションが余っていると、いつまで待っても勝手に解放されないようです。と、これはcommons-dbcpの機能なので、DBとか別の層に解放する仕組みがあったりするのかも。
追記(2007-05-03)
ryo さんからのコメントより、「コネクション破棄忘れの救済機能ではない」ことを追記しました。ありがとうございます!