[原创]  简单使用Oracle 普适连接池(UCP)的案例_Hadoop,ERP及大数据讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Hadoop,ERP及大数据讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 7723 | 回复: 0   主题: [原创]  简单使用Oracle 普适连接池(UCP)的案例        下一篇 
csslanding
注册用户
等级:列兵
经验:112
发帖:9
精华:0
注册:2012-3-20
状态:离线
发送短消息息给csslanding 加好友    发送短消息息给csslanding 发消息
发表于: IP:您无权察看 2012-3-20 11:33:20 | [全部帖] [楼主帖] 楼主

适用软件平台:

Universal Connection Pool - Version: 11.1.0.7.0 and later   [Release: and later ]
Information in this document applies to any platform.


目标

随着数据库11.1.0.7的发布,甲骨文也相应发布了新的普适JDBC连接池,普适链接池资料库是一个功能完备的连接池管理连接。专注于密集数据库的Java应用程序使用连接池能够改善性能并能更好的利用系统资源。


实现方法

入门:

(1)连接池设计和使用要求JRE 1.5 或更高版本

(2)JCBC驱动程序或链接工厂类可以返回java.sql.Connection和javax.sql.XAConnection对象。驱动程序支持甲骨文10.1或更高版本。Oracle数据库有非常高级的功能和特点,例如如Oracle RAC快速连接故障切换,需要与Oracle客户端软件包括Oracle通知服务库(ons.jar)。

Ucp.jar必须包含到环境变量classpath当中。

一个支持SQL语句的数据库。像OracleRAC和快速链接的Failover等高级功能需要甲骨文数据库。

基本示例

下列例子基于oracle数据库连接

(1)         从下面链接上下载UCP.jar

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html


(2)        下载你想用的Oracle JDBC驱动器在本例中使用JDK1.6,所以我们下载ojdbc6.jar 11.1.0.7版本.连接如下

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html


oracle 数据库11g发行版本1.(11.1.0.7)、(11.1.0.7)驱动

(3)         首先确保你有一个OJDBC 6可用的JDK1.6,如果想要使用JDK 1.5 请下载OJDBC以作相应的替换。一下是用JDK1.6为示例。

D:\temp\notes>set PATH=D:\jdev\jdk16\bin;%PATH%
D:\temp\notes>java –version


Java 版本 “1.6.0_07”

Java(TM) SE 运行时间环境 (build 1.6.0_07-b06)

Java HotSpot(TM) 客户端 VM (build 10.0-b23, mixed mode, sharing)

D:\temp\notes>


(4)         分别将ucp.jar 和ojdbc6.jar添加到系统变量中,如:

D:\temp\notes>set CLASSPATH=ojdbc6.jar;ucp.jar;.


(5)创建如下java类“BasicDemo.java”以保证能完全连接到Oracle数据库

package support.au.ucp;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import oracle.ucp.jdbc.PoolDataSource;
import oracle.ucp.jdbc.PoolDataSourceFactory;
public class BasicDemo
{
      private PoolDataSource pds = null;
      public BasicDemo() throws SQLException
      {
            // Create pool-enabled data source instance.
            pds = PoolDataSourceFactory.getPoolDataSource();
            // PoolDataSource and UCP configuration
            //set the connection properties on the data source and pool properties
            pds.setUser("scott");
            pds.setPassword("tiger");
            pds.setURL("jdbc:oracle:thin:@//xxxx.au.oracle.com:1521/linux11g");
            pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
            pds.setInitialPoolSize(10);
            pds.setMinPoolSize(10);
            pds.setMaxPoolSize(20);
      }
      public void displayPoolDetails () throws SQLException
      {
            System.out.println("-----------");
            System.out.println("NumberOfAvailableConnections: " +
            pds.getAvailableConnectionsCount());
            System.out.println("BorrowedConnectionsCount: " +
            pds.getBorrowedConnectionsCount());
            System.out.println("-----------");
      }
      public void run () throws SQLException
      {
            List connList = new ArrayList();
            for (int i = 0; i < 5 ;i++ )
            {
                  //Get a database connection from the datasource.
                  Connection conn = pds.getConnection();
                  System.out.println("Retrieved a connection from pool");
                  displayPoolDetails();
                  connList.add(conn);
            }
            // close all connections
            for (int j = 0; j < connList.size() ; j++)
            {
                  ((Connection)connList.get(j)).close();
            }
            //finally display pool details again
            displayPoolDetails();
      }
      public static void main(String[] args)
      {
            System.out.println("Started at " + new Date());
            try
            {
                  BasicDemo basicDemo = new BasicDemo();
                  basicDemo.run();
            }
            catch (SQLException e)
            {
                  System.out.println("SQLException occurred : " + e.getMessage());
            }
            System.out.println("Ended at " + new Date());
      }
}


编译执行:

2009 -1-15 星期四 09:47:34启动

在连接池中取回了一个连接

NumberOfAvailableConnections: 9
BorrowedConnectionsCount: 1


在连接池中取回了一个连接

NumberOfAvailableConnections: 8
BorrowedConnectionsCount: 2


在连接池中取回了一个连接

-----------
NumberOfAvailableConnections:7
BorrowedConnectionsCount:3


在连接池中取回了一个连接

NumberOfAvailableConnections:6
BorrowedConnectionsCount:4


在连接池中取回了一个连接

NumberOfAvailableConnections:5
BorrowedConnectionsCount:5


把链接归还给连接池

NumberOfAvailableConnections:10
BorrowedConnectionsCount:0


2009-1-15 星期四 09:47:36 执行结束

D:\ temp\notes>




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论