數據庫連接池 oracle java

http://zhidao.baidu.com/link?url=VEDELyQH8nkt9V62hlJtcihIcBeROXWSrVA_J7k2VBUTZwMPJ26U7pg9IUZfpvqBR5WOzPWhKVq0UTOnLumMccc5IPZFajvHb3_zZz4fjPy

數據庫連接池處言喻現部application 
server都提供自數據庫連接池案要按照application server文檔說明確配置即應用享受數據庫連接池處


些候我應用獨立java 
application並普通WEB/J2EE應用且單獨運行要application 
server配合種情況我需要建立自數據庫連接池案


1、  DBCP


DBCPApache源項目:
commons.dbcp


DBCP依賴Apache另外2源項目
commons.collectionscommons.pool


dbcp包目前版本1.2.1:http://jakarta.apache.org/commons/dbcp/


pool包目前版本1.3:http://jakarta.apache.org/commons/pool/


common-collections包:http://jakarta.apache.org/commons/collections/


載些包並些包路徑添加classpath使用dbcp做項目數據庫連接池使用


建立我自數據庫連接池使用xml文件傳入需要參數使用hard 
code式簡單介紹所需要我自寫代碼少要建立文件: 


import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import java.sql.SQLException;
import java.sql.Connection;
import java.util.Properties;


public class ConnectionSource {


	private static BasicDataSource dataSource = null;


	public ConnectionSource() {


	}


	public static void init() {


		if (dataSource != null) {
			try {
				dataSource.close();
			} catch (Exception e) {
			}


			dataSource = null;
		}


		try {
			Properties p = new Properties();


			p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");
			p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB");


			p.setProperty("password", "scott");
			p.setProperty("username", "tiger");
			p.setProperty("maxActive", "30");


			p.setProperty("maxIdle", "10");
			p.setProperty("maxWait", "1000");
			p.setProperty("removeAbandoned", "false");
			p.setProperty("removeAbandonedTimeout", "120");
			p.setProperty("testOnBorrow", "true");
			p.setProperty("logAbandoned", "true");


			dataSource = (BasicDataSource) BasicDataSourceFactory
					.createDataSource(p);


		} catch (Exception e) {
		}


	}


	public static synchronized Connection getConnection() throws SQLException {


		if (dataSource == null) {


			init();
		}


		Connection conn = null;


		if (dataSource != null) {


			conn = dataSource.getConnection();
		}


		return conn;
	}
}


接我應用要簡單使用ConnectionSource.getConnection()取連接池數據庫連接享受數據庫連接帶給我處我使用完取數據庫連接要簡單使用connection.close()連接返連接池至於直接關閉連接返給連接池dbcp使用委派模型實現Connection接口


使用Properties創建BasicDataSource參數設置比較重要:


testOnBorrow、testOnReturn、testWhileIdle意思取連接、返連接或連接空閒否進行效性驗證(即否數據庫連通)默認都false所數據庫連接某種原斷掉再連接池取連接實際能效連接所確保取連接效 
些屬性設true進行校驗需要另參數:validationQueryoracle說:SELECT COUNT(*) FROM 
DUAL實際簡單SQL語句驗證SQL語句數據庫跑已連接結返


     2參數:timeBetweenEvictionRunsMillis  
minEvictableIdleTimeMillis 
兩配合持續更新連接池連接象timeBetweenEvictionRunsMillis 
於0每timeBetweenEvictionRunsMillis 
間啓線程校驗連接池閒置間超minEvictableIdleTimeMillis連接象


其些參數參考源代碼


2、  
C3P0:


C3P0放源代碼JDBC連接池C3PO 
連接池優秀連接池推薦使用C3PO實現JDBC3.0規範部功能性能更加突,包括實現jdbc3jdbc2擴展規範說明Connection Statement 池DataSources 象
載址:http://sourceforge.net/projects/c3p0


package 
com.systex.utils.web;


import java.beans.PropertyVetoException;
import 
java.sql.Connection;
import java.sql.SQLException;
import 
javax.sql.DataSource;
import 
com.mchange.v2.c3p0.ComboPooledDataSource;


public class C3PODataSource {
 private static 
ComboPooledDataSource dataSource = null;
 private static final String driver 
= "com.mysql.jdbc.Driver";
 private static final String url = 
"jdbc:mysql://localhost:3306/wyd";
 private static final String userName = 
"root";
 private static final String password = "root";


public static DataSource getDataSource() {
  if 
(dataSource == null) {
   dataSource = new ComboPooledDataSource();
   try 
{
    dataSource.setDriverClass(driver);
   } catch (PropertyVetoException 
e) {
    System.out.println("DataSource Load Driver 
Exception!!");
    e.printStackTrace();
   }
   dataSource.setJdbcUrl(url);
   dataSource.setUser(userName);
   dataSource.setPassword(password);
   // 
設置連接池連接容量
   dataSource.setMaxPoolSize(20);
   // 
設置連接池連接容量
   dataSource.setMinPoolSize(2);
   // 
設置連接池statements象容量
   dataSource.setMaxStatements(100);
  }
  return 
dataSource;
 }


public static Connection getConnection() throws 
SQLException {
  return 
C3PODataSource.getDataSource().getConnection();
 }
}


3、  Proxool


Java SQL 
Driver驅程序提供選擇其類型驅程序連接池封裝非簡單移植現存代碼完全配置快速熟健壯透明現存JDBC驅程序增加連接池功能


官網站: http://proxool.sourceforge.net/


載址:http://proxool.sourceforge.net/download.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章