java配置dbcp串連池,經過反覆測試

來源:互聯網
上載者:User

標籤:dpcp   tomcat   資料庫連接池   java   線程   

<span style="font-size:18px;"><strong>Java代碼</strong></span>
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資料庫連接池管理類<br> * 使用為tomcat部署環境<br> * 需要在類路徑下準備資料庫連接設定檔dbcp.properties *  *  */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() { }   /**  * 擷取連結,用完後記得關閉  *   * @see {@link DBManager#closeConn(Connection)}  * @return  */ public static final Connection getConn() {  Connection conn = null;  try {   conn = dataSource.getConnection();  } catch (SQLException e) {   log.error("擷取資料庫連接失敗:" + e);  }  return conn; }   /**  * 關閉串連  *   * @param conn  *            需要關閉的串連  */ public static void closeConn(Connection conn) {  try {   if (conn != null && !conn.isClosed()) {    conn.setAutoCommit(true);    conn.close();   }  } catch (SQLException e) {   log.error("關閉資料庫連接失敗:" + e);  } }  } 


properties檔案

#資料庫驅動driverClassName=com.mysql.jdbc.Driver#資料庫連接地址url=jdbc:mysql://localhost/lianjc#使用者名稱username=root#密碼password=123456  #串連池的最大資料庫連接數。設為0表示無限制maxActive=30#最大空閑數,資料庫連接的最大空閑時間。超過空閑時間,資料庫連#接將被標記為不可用,然後被釋放。設為0表示無限制maxIdle=10#最大建立串連等待時間。如果超過此時間將接到異常。設為-1表示無限制maxWait=1000  #超過removeAbandonedTimeout時間後,是否進 行沒用串連(廢棄)的回收(預設為false,調整為true) removeAbandoned=true#超過時間限制,回收沒有用(廢棄)的串連(預設為 300秒,調整為180)removeAbandonedTimeout=180 


線程測試,千萬連結無壓力

import java.sql.Connection;public class TheadTest extends Thread{public static void main(String[] args) {for(int i=0;i<10000;i++){new TheadTest2().start();}}@Overridepublic void run() {long begin=System.currentTimeMillis();  for(int i=0;i<100000;i++){   Connection conn=null;try {conn = new JDBCUtils().getConnection();} catch (Exception e) {e.printStackTrace();}  // System.out.println(i);   new JDBCUtils().close(null, null, conn);  }  long end=System.currentTimeMillis();  System.out.println("用時:"+(end-begin));}}class TheadTest2 extends Thread{@Overridepublic void run() {  long begin=System.currentTimeMillis();  for(int i=0;i<1000;i++){   Connection conn=XDBManager.getConn();  // System.out.println(i);   XDBManager.closeConn(conn);  }  long end=System.currentTimeMillis();  System.out.println("用時:"+(end-begin));}}

需要的jar包



java配置dbcp串連池,經過反覆測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.