数据库连接池 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

猜你喜欢

转载自blog.csdn.net/shen020453/article/details/51680647