Tomcat jdbc pool是apache在tomcat7版本中啟用的新連接池,用它來(lái)解決以往DBCP無(wú)法解決的一些問題。
Tomcat jdbc pool的優(yōu)點(diǎn):
(1)??? tomcat jdbc pool 近乎兼容 dbcp ,性能更高
(2)??? 異步方式獲取連接
(3)??? tomcat jdbc pool 是 tomcat 的一個(gè)模塊,基于 tomcat JULI,使用 Tomcat 的日志框架
(4)??? 使用 javax.sql.PooledConnection 接口獲取連接
(5)??? 支持高并發(fā)應(yīng)用環(huán)境
(6)??? 超簡(jiǎn)單,核心文件只有8個(gè),比 c3p0 還少
(7)??? 更好的空閑連接處理機(jī)制
(8)??? 支持 JMX
(9)??? 支持 XA Connection
Tomcat jdbc pool的使用僅需2個(gè)jar包,分別為tomcat-jdbc.jar和tomcat-juli.jar,這兩個(gè)jar包都可以在tomcat7中找到,tomcat-jdbc.jar在tomcat的lib目錄下,tomcat-juli.jar在bin目錄下。
下面是我自己測(cè)試用的連接類:
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ù)庫(kù)連接池管理類 * */ 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ū)動(dòng)名 poolProperties.setDriverClassName(dbProperties.getProperty("driver" )); // 設(shè)置數(shù)據(jù)庫(kù)用戶名 poolProperties.setUsername(dbProperties.getProperty("username" )); // 設(shè)置數(shù)據(jù)庫(kù)密碼 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ù)庫(kù)連接池失敗" ); } } private DBUtil() { super (); } /** * 獲取數(shù)據(jù)庫(kù)連接 * @return 數(shù)據(jù)庫(kù)連接 */ public static final Connection getConnection() { Connection conn = null ; try { conn = dataSource.getConnection(); } catch (SQLException e) { throw new RuntimeException("獲取數(shù)據(jù)庫(kù)連接失敗" ); } 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ù)庫(kù)連接失敗" ); } } }
下面是配置文件信息:
##############################MySQL數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)############################## #數(shù)據(jù)庫(kù)連接URL url =jdbc:mysql: // localhost:3306/grtg?useUnicode=true&characterEncoding=utf8 #數(shù)據(jù)庫(kù)連接驅(qū)動(dòng) driver = com.mysql.jdbc.Driver #數(shù)據(jù)庫(kù)連接用戶名 username = root #數(shù)據(jù)庫(kù)連接密碼 password = root ##############################MySQL數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)END########################### ##############################連接池配置###################################### #初始化連接:連接池啟動(dòng)時(shí)創(chuàng)建的初始化連接數(shù)量 initialSize =10 #連接池的最大數(shù)據(jù)庫(kù)連接數(shù)。設(shè)為0表示無(wú)限制 maxActive =50 #最大空閑數(shù),數(shù)據(jù)庫(kù)連接的最大空閑時(shí)間。超過空閑時(shí)間,數(shù)據(jù)庫(kù)連接將被釋放。設(shè)為0表示無(wú)限制 maxIdle =10 #最小空閑連接:連接池中容許保持空閑狀態(tài)的最小連接數(shù)量,低于這個(gè)數(shù)量將創(chuàng)建新的連接 minIdle =5 #最大建立連接等待時(shí)間。如果超過此時(shí)間將接到異常。設(shè)為 - 1表示無(wú)限制 maxWait =1000 #超過removeAbandonedTimeout時(shí)間后,是否進(jìn) 行沒用連接(廢棄)的回收(默認(rèn)為false,調(diào)整為true) removeAbandoned = true #超過時(shí)間限制,回收沒有用(廢棄)的連接(默認(rèn)為 300秒,調(diào)整為180) removeAbandonedTimeout =180 ##############################連接池配置######################################
以上便是配置信息,諸位如果有好的見解可以提出,大家共同學(xué)習(xí)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
