欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java配置dbcp連接池(數(shù)據(jù)庫(kù)連接池)示例分享

 更新時(shí)間:2013年12月30日 11:06:56   作者:  
java配置dbcp連接池示例分享,大家參考使用吧

使用jar包:commons-dbcp-1.4.jar、commons-pool-1.6.jar、commons-logging-1.1.3.jar,另外還有數(shù)據(jù)庫(kù)的jdbc驅(qū)動(dòng),適用java6及以上平臺(tái)

連接池管理類

復(fù)制代碼 代碼如下:

package cn.songxinqiang.samples.commonsdbcp.util;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;

/**
 * tomcat數(shù)據(jù)庫(kù)連接池管理類<br>
 * 使用為tomcat部署環(huán)境<br>
 * 需要在類路徑下準(zhǔn)備數(shù)據(jù)庫(kù)連接配置文件dbcp.properties
 *
 * @author 宋信強(qiáng)
 * @mail songxinqiang123@gmail.com
 *
 * @time 2013-12-27
 *
 */
public class DBManager {
 private static final Log log = LogFactory.getLog(DBManager.class);
 private static final String configFile = "dbcp.properties";

 private static DataSource dataSource;

 static {
  Properties dbProperties = new Properties();
  try {
   dbProperties.load(DBManager.class.getClassLoader()
     .getResourceAsStream(configFile));
   dataSource = BasicDataSourceFactory.createDataSource(dbProperties);

   Connection conn = getConn();
   DatabaseMetaData mdm = conn.getMetaData();
   log.info("Connected to " + mdm.getDatabaseProductName() + " "
     + mdm.getDatabaseProductVersion());
   if (conn != null) {
    conn.close();
   }
  } catch (Exception e) {
   log.error("初始化連接池失敗:" + e);
  }
 }

 private DBManager() {
 }

 /**
  * 獲取鏈接,用完后記得關(guān)閉
  *
  * @see {@link DBManager#closeConn(Connection)}
  * @return
  */
 public static final Connection getConn() {
  Connection conn = null;
  try {
   conn = dataSource.getConnection();
  } catch (SQLException e) {
   log.error("獲取數(shù)據(jù)庫(kù)連接失敗:" + e);
  }
  return conn;
 }

 /**
  * 關(guān)閉連接
  *
  * @param conn
  *            需要關(guān)閉的連接
  */
 public static void closeConn(Connection conn) {
  try {
   if (conn != null && !conn.isClosed()) {
    conn.setAutoCommit(true);
    conn.close();
   }
  } catch (SQLException e) {
   log.error("關(guān)閉數(shù)據(jù)庫(kù)連接失?。? + e);
  }
 }

}

連接配置文件

復(fù)制代碼 代碼如下:

#數(shù)據(jù)庫(kù)驅(qū)動(dòng)
driverClassName=com.mysql.jdbc.Driver
#數(shù)據(jù)庫(kù)連接地址
url=jdbc:mysql://localhost/ctg
#用戶名
username=root
#密碼
password=123456

#連接池的最大數(shù)據(jù)庫(kù)連接數(shù)。設(shè)為0表示無(wú)限制
maxActive=30
#最大空閑數(shù),數(shù)據(jù)庫(kù)連接的最大空閑時(shí)間。超過(guò)空閑時(shí)間,數(shù)據(jù)庫(kù)連
#接將被標(biāo)記為不可用,然后被釋放。設(shè)為0表示無(wú)限制
maxIdle=10
#最大建立連接等待時(shí)間。如果超過(guò)此時(shí)間將接到異常。設(shè)為-1表示無(wú)限制
maxWait=1000

#超過(guò)removeAbandonedTimeout時(shí)間后,是否進(jìn) 行沒(méi)用連接(廢棄)的回收(默認(rèn)為false,調(diào)整為true)
removeAbandoned=true
#超過(guò)時(shí)間限制,回收沒(méi)有用(廢棄)的連接(默認(rèn)為 300秒,調(diào)整為180)
removeAbandonedTimeout=180

測(cè)試連接池工作效率,同時(shí)演示怎樣獲取連接和關(guān)閉連接

復(fù)制代碼 代碼如下:

public class ConnectionSource {
 public static void main(String[] args){
  long begin=System.currentTimeMillis();
  for(int i=0;i<10000;i++){
   Connection conn=DBManager.getConn();
   System.out.print(i+"   ");
   DBManager.closeConn(conn);
  }
  long end=System.currentTimeMillis();
  System.out.println("用時(shí):"+(end-begin));
 }
}

相關(guān)文章

  • Java實(shí)現(xiàn)解析JSON大文件JsonReader工具詳解

    Java實(shí)現(xiàn)解析JSON大文件JsonReader工具詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)解析JSON大文件的工具JsonReader使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • JAVA之讀取properties時(shí)路徑的注意問(wèn)題

    JAVA之讀取properties時(shí)路徑的注意問(wèn)題

    這篇文章主要介紹了JAVA之讀取properties時(shí)路徑的注意問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringCloud-Hystrix-Dashboard客戶端服務(wù)監(jiān)控的實(shí)現(xiàn)方法

    SpringCloud-Hystrix-Dashboard客戶端服務(wù)監(jiān)控的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringCloud-Hystrix-Dashboard客戶端服務(wù)監(jiān)控的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Spring中如何動(dòng)態(tài)注入Bean實(shí)例教程

    Spring中如何動(dòng)態(tài)注入Bean實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于Spring中如何動(dòng)態(tài)注入Bean的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Mybatis實(shí)現(xiàn)動(dòng)態(tài)建表代碼實(shí)例

    Mybatis實(shí)現(xiàn)動(dòng)態(tài)建表代碼實(shí)例

    這篇文章主要介紹了Mybatis實(shí)現(xiàn)動(dòng)態(tài)建表代碼實(shí)例,解釋一下,就是指根據(jù)傳入的表名,動(dòng)態(tài)地創(chuàng)建數(shù)據(jù)庫(kù)表,以供后面的業(yè)務(wù)場(chǎng)景使用,
    而使用 Mybatis 的動(dòng)態(tài) SQL,就能很好地為我們解決這個(gè)問(wèn)題,需要的朋友可以參考下
    2023-10-10
  • Spring源碼之事件監(jiān)聽(tīng)機(jī)制(實(shí)現(xiàn)EventListener接口方式)

    Spring源碼之事件監(jiān)聽(tīng)機(jī)制(實(shí)現(xiàn)EventListener接口方式)

    這篇文章主要介紹了Spring源碼之事件監(jiān)聽(tīng)機(jī)制(實(shí)現(xiàn)EventListener接口方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Spring JDBCTemplate原理及使用實(shí)例

    Spring JDBCTemplate原理及使用實(shí)例

    這篇文章主要介紹了Spring JDBCTemplate原理及使用實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot的跨域注解@CrossOrigin解析

    SpringBoot的跨域注解@CrossOrigin解析

    這篇文章主要介紹了SpringBoot的跨域注解@CrossOrigin解析,Spring Framework 4.2 GA為CORS提供了第一類支持,使您比通常的基于過(guò)濾器的解決方案更容易和更強(qiáng)大地配置它,所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin,需要的朋友可以參考下
    2023-12-12
  • Java銀行取錢線程安全問(wèn)題實(shí)例分析

    Java銀行取錢線程安全問(wèn)題實(shí)例分析

    這篇文章主要介紹了Java銀行取錢線程安全問(wèn)題,結(jié)合具體實(shí)例形式分析了java使用線程操作模擬銀行取錢的相關(guān)安全問(wèn)題,需要的朋友可以參考下
    2019-09-09
  • Java的JDBC編程使用之連接Mysql數(shù)據(jù)庫(kù)

    Java的JDBC編程使用之連接Mysql數(shù)據(jù)庫(kù)

    這篇文章主要給大家介紹了關(guān)于Java的JDBC編程使用之連接Mysql數(shù)據(jù)庫(kù)的相關(guān)資料,JDBC是一種用于執(zhí)行SQL語(yǔ)句的Java?API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),需要的朋友可以參考下
    2023-12-12

最新評(píng)論