Tomcat jdbc pool是apache在tomcat7版本中启用的新连接池,用它来解决以往DBCP无法解决的一些问题。
Tomcat jdbc pool的优点:
(1) tomcat jdbc pool 近乎兼容 dbcp ,性能更高
(2) 异步方式获取连接
(3) tomcat jdbc pool 是 tomcat 的一个模块,基于 tomcat JULI,使用 Tomcat 的日志框架
(4) 使用 javax.sql.PooledConnection 接口获取连接
(5) 支持高并发应用环境
(6) 超简单,核心文件只有8个,比 c3p0 还少
(7) 更好的空闲连接处理机制
(8) 支持 JMX
(9) 支持 XA Connection
Tomcat jdbc pool的使用仅需2个jar包,分别为tomcat-jdbc.jar和tomcat-juli.jar,这两个jar包都可以在tomcat7中找到,tomcat-jdbc.jar在tomcat的lib目录下,tomcat-juli.jar在bin目录下。
下面是我自己测试用的连接类:
package
com.grtg.util;
import
java.sql.Connection;
import
java.sql.SQLException;
import
java.util.Properties;
import
org.apache.tomcat.jdbc.pool.DataSource;
import
org.apache.tomcat.jdbc.pool.PoolProperties;
/**
* tomcat jdbc pool数据库连接池管理类
*
*/
public
class
DBUtil {
static
DataSource dataSource =
new
DataSource();
static
{
PoolProperties poolProperties
=
new
PoolProperties();
Properties dbProperties
=
new
Properties();
try
{
dbProperties.load(DBUtil.
class
.getClassLoader().getResourceAsStream(配置文件地址));
//
设置URL
poolProperties.setUrl(dbProperties.getProperty("url"
));
//
设置驱动名
poolProperties.setDriverClassName(dbProperties.getProperty("driver"
));
//
设置数据库用户名
poolProperties.setUsername(dbProperties.getProperty("username"
));
//
设置数据库密码
poolProperties.setPassword(dbProperties.getProperty("password"
));
//
设置初始化连接数
poolProperties.setInitialSize(Integer.valueOf(dbProperties.getProperty("initialSize"
)));
dataSource.setPoolProperties(poolProperties);
}
catch
(Exception e) {
throw
new
RuntimeException("初始化数据库连接池失败"
);
}
}
private
DBUtil() {
super
();
}
/**
* 获取数据库连接
*
@return
数据库连接
*/
public
static
final
Connection getConnection() {
Connection conn
=
null
;
try
{
conn
=
dataSource.getConnection();
}
catch
(SQLException e) {
throw
new
RuntimeException("获取数据库连接失败"
);
}
return
conn;
}
/**
* 关闭连接
*
*
@param
conn
* 需要关闭的连接
*/
public
static
void
closeConnection(Connection conn) {
try
{
if
(conn !=
null
&& !
conn.isClosed()) {
conn.close();
}
}
catch
(SQLException e) {
throw
new
RuntimeException("关闭数据库连接失败"
);
}
}
}
下面是配置文件信息:
##############################MySQL数据库连接驱动##############################
#数据库连接URL
url
=jdbc:mysql:
//
localhost:3306/grtg?useUnicode=true&characterEncoding=utf8
#数据库连接驱动
driver
=
com.mysql.jdbc.Driver
#数据库连接用户名
username
=
root
#数据库连接密码
password
=
root
##############################MySQL数据库连接驱动END###########################
##############################连接池配置######################################
#初始化连接:连接池启动时创建的初始化连接数量
initialSize
=10
#连接池的最大数据库连接数。设为0表示无限制
maxActive
=50
#最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被释放。设为0表示无限制
maxIdle
=10
#最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接
minIdle
=5
#最大建立连接等待时间。如果超过此时间将接到异常。设为
-
1表示无限制
maxWait
=1000
#超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
removeAbandoned
=
true
#超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
removeAbandonedTimeout
=180
##############################连接池配置######################################
以上便是配置信息,诸位如果有好的见解可以提出,大家共同学习。

