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 ##############################連接池配置######################################
以上便是配置信息,諸位如果有好的見解可以提出,大家共同學習。
