日期:2014-05-16  浏览次数:20561 次

oracle提供的jdbc连接池实现
http://www.blogjava.net/Unmi/archive/2008/01/16/175683.html
我在 Websphere Application Server (WAS) 下配置 JDBC 提供程序时,选择了 Oracle JDBC Driver 确定之后,看到最后一个选项是:oracle.jdbc.pool.OracleConnectionPoolDataSource。

顾名思义,这是一个 DataSource 实现为,就像 DBCP 的 BasicDataSource 一样。那么能不能也像 BasicDataSource 那样,通过 new BasicDataSource(),然后设置各个必须的属性得到一个数据源 DataSource 呢?这个 OracleConnectionPoolDataSource 又是在哪个包里呢?

用 Eclipse 的 Jar Search 插件一查,原来它就是我们熟知的 classes111.jar 里,当然,在 $ORACLE_HOME/jdbc/lib 下的 classes12.jar、classes12.zip、classes12dms.jar、classes111.zip, nls_charset11.jar、nls_charset11.zip、nls_charset12.jar、nls_charset12.zip、 ojdbc14.jar、ojdbc14_g.jar。它们都是可用的 Oracle 驱动包,只是一直都未搞明它们之间有什么或大或小的差异。

先看一段 DataSource 的创建及测试代码

view sourceprint
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource; 
import oracle.jdbc.pool.OracleConnectionPoolDataSource;

**
11.
* 创建及测试 OracleDataSource
12.
* @author Unmi
13.
*/
14.public class OracleDataSourceCreator {
15.

16.   
/**
17.    
* 测试代码
18.    
* @param args
19.    
* @throws SQLException 
20.    
*/
21.   
public static void main(String[] args) throws SQLException {
22.       
DataSource ds = createDataSource();
23.       
Connection conn = ds.getConnection();
24.        

25.       
//打印出 conn 的实现类名
26.       
System.out.println("Connection 实现类是:"+conn);
27.        

28.       
//测试查询记录
29.       
Statement stmt = conn.createStatement();
30.       
ResultSet rs = stmt.executeQuery("select * from dual");
31.       
if(rs.next()){
32.           
System.out.println(rs.getString(1));
33.       
}
34.        

35.       
//以下测试是否使用的是连接池,每次关闭连接前用 netstat -na|findstr 38.2 查看连接
36.       
conn.close();
37.       
conn = ds.getConnection();
38.       
conn.close();
39.       
conn = ds.getConnection();
40.       
conn.close();
41.   
}
42.    

43.   
/**
44.    
* 创建一个 DataSource
45.    
* @throws SQLException
46.    
*/
47.   
public static DataSource createDataSource() throws SQLException
48.   
{
49.       
OracleConnectionPoolDataSource ocps = new OracleConnectionPoolDataSource();
50.       
ocps.setURL("jdbc:oracle:thin:@10.128.38.2:1521:sr3");
51.       
ocps.setUser("qatest");
52.       
ocps.setPassword("qatest");
53.    &nb