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