Tomcat jdbc pool是apache在tomcat7版本中啟用的新連接池,用它來解決以往DBCP無法解決的一些問題。
Tomcat jdbc pool的優(yōu)點:
(1)??? tomcat jdbc pool 近乎兼容 dbcp ,性能更高
(2)??? 異步方式獲取連接
(3)??? tomcat jdbc pool 是 tomcat 的一個模塊,基于 tomcat JULI,使用 Tomcat 的日志框架
(4)??? 使用 javax.sql.PooledConnection 接口獲取連接
(5)??? 支持高并發(fā)應(yīng)用環(huán)境
(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數(shù)據(jù)庫連接池管理類
*
*/
public
class
DBUtil {
static
DataSource dataSource =
new
DataSource();
static
{
PoolProperties poolProperties
=
new
PoolProperties();
Properties dbProperties
=
new
Properties();
try
{
dbProperties.load(DBUtil.
class
.getClassLoader().getResourceAsStream(配置文件地址));
//
設(shè)置URL
poolProperties.setUrl(dbProperties.getProperty("url"
));
//
設(shè)置驅(qū)動名
poolProperties.setDriverClassName(dbProperties.getProperty("driver"
));
//
設(shè)置數(shù)據(jù)庫用戶名
poolProperties.setUsername(dbProperties.getProperty("username"
));
//
設(shè)置數(shù)據(jù)庫密碼
poolProperties.setPassword(dbProperties.getProperty("password"
));
//
設(shè)置初始化連接數(shù)
poolProperties.setInitialSize(Integer.valueOf(dbProperties.getProperty("initialSize"
)));
dataSource.setPoolProperties(poolProperties);
}
catch
(Exception e) {
throw
new
RuntimeException("初始化數(shù)據(jù)庫連接池失敗"
);
}
}
private
DBUtil() {
super
();
}
/**
* 獲取數(shù)據(jù)庫連接
*
@return
數(shù)據(jù)庫連接
*/
public
static
final
Connection getConnection() {
Connection conn
=
null
;
try
{
conn
=
dataSource.getConnection();
}
catch
(SQLException e) {
throw
new
RuntimeException("獲取數(shù)據(jù)庫連接失敗"
);
}
return
conn;
}
/**
* 關(guān)閉連接
*
*
@param
conn
* 需要關(guān)閉的連接
*/
public
static
void
closeConnection(Connection conn) {
try
{
if
(conn !=
null
&& !
conn.isClosed()) {
conn.close();
}
}
catch
(SQLException e) {
throw
new
RuntimeException("關(guān)閉數(shù)據(jù)庫連接失敗"
);
}
}
}
下面是配置文件信息:
##############################MySQL數(shù)據(jù)庫連接驅(qū)動##############################
#數(shù)據(jù)庫連接URL
url
=jdbc:mysql:
//
localhost:3306/grtg?useUnicode=true&characterEncoding=utf8
#數(shù)據(jù)庫連接驅(qū)動
driver
=
com.mysql.jdbc.Driver
#數(shù)據(jù)庫連接用戶名
username
=
root
#數(shù)據(jù)庫連接密碼
password
=
root
##############################MySQL數(shù)據(jù)庫連接驅(qū)動END###########################
##############################連接池配置######################################
#初始化連接:連接池啟動時創(chuàng)建的初始化連接數(shù)量
initialSize
=10
#連接池的最大數(shù)據(jù)庫連接數(shù)。設(shè)為0表示無限制
maxActive
=50
#最大空閑數(shù),數(shù)據(jù)庫連接的最大空閑時間。超過空閑時間,數(shù)據(jù)庫連接將被釋放。設(shè)為0表示無限制
maxIdle
=10
#最小空閑連接:連接池中容許保持空閑狀態(tài)的最小連接數(shù)量,低于這個數(shù)量將創(chuàng)建新的連接
minIdle
=5
#最大建立連接等待時間。如果超過此時間將接到異常。設(shè)為
-
1表示無限制
maxWait
=1000
#超過removeAbandonedTimeout時間后,是否進 行沒用連接(廢棄)的回收(默認為false,調(diào)整為true)
removeAbandoned
=
true
#超過時間限制,回收沒有用(廢棄)的連接(默認為 300秒,調(diào)整為180)
removeAbandonedTimeout
=180
##############################連接池配置######################################
以上便是配置信息,諸位如果有好的見解可以提出,大家共同學(xué)習(xí)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

