Tomcat jdbc pool配置


  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
##############################連接池配置######################################

以上便是配置信息,諸位如果有好的見解可以提出,大家共同學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM