来自tomcat-docs
简介
DBCP利用了Jakarta-Commons数据库连接池。他依赖以下几个Jakarta-Commons组件:
- Jakarta-Commons DBCP 1.0
- Jakarta-Commons Collections 2.0
- Jakarta-Commons Pool 1.0
这些jar文件和你的数据库驱动jar需要安装在$CATALINA_HOME/common/lib下面。
NOTE: 第三方驱动需要jar格式,不是zip格式。Tomcat 只把$CATALINA_HOME/common/lib/*.jar 添加到classpath
NOTE: 不要把这些jar放到你应用的/WEB-INF/lib或者$JAVA_HOME/jre/lib/ext里面。You will experience problems if you install them anyplace other than
$CATALINA_HOME/common/lib
.(否则,你会遇到麻烦)防止数据库连接池泄漏
一个数据库连接池创建和管理了一个数据库连接的池。循环和重用比每次都打开一个新的数据库连接更有效率。
这里有个数据库连接池的问题。一个web应用程序必须关闭ResultSet's, Statement's, and Connection's。在关闭数据库连接的过程中发生错误会导致他们不再会被重用。这就叫做“数据库连接池泄漏”。这将会最终导致你的web应用程序数据库连接失败,如果(池中)没有足够可用的数据库连接。
这里有个解决方案。Jakarta-Commons DBCP 可以被配置以用来跟踪和恢复这些遗弃的数据库连接。不仅可以恢复他们,而且可以产生一个堆栈来跟踪那些打开了数据库连接资源但是没有关掉他们的代码。
配置DBCP数据源,让遗弃的数据库连接能够被删除并再生,你可以添加下面的代码到你的配置文件中:
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>当可用的数据库连接减少的时候,DBCP能够恢复和循环利用它找到的所有的被遗弃的数据库连接。默认的配置是false
用removeAbandonedTimeout这个参数来设定一个连接在被判定为“被遗弃“之前的空闲时间。
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
The default timeout for removing abandoned connections is 300 seconds(默认空闲300秒被认为是已经被遗弃)logAbandoned。如果你想DBCP来给遗弃数据库连接的代码纪录日至,你可以把logAbandoned这个参数设置为true.
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
默认是false