proxool应用详解

 

最近开发时用到 proxool 数据库连接池框架,这个框架 完全可配置、快速、成熟、健壮。可以透明地为你现存的 JDBC 驱动程序增加连接池功能。

先介绍下什么是 proxool 吧。我也是从网上拷贝的 :

Proxool 是一种Java 数据库连接池技术。是sourceforge 下的一个开源项目, 这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。 目前是和DBCP 以及C3P0 一起,最为常见的三种JDBC 连接池技术。 日前,Hibernate 官方宣布由于Bug 太多不再支持DBCP ,而推荐使用 ProxoolC3P0

官网地址: http://proxool.sourceforge.net/ 目前最新版本是:0.9.1

现在我们 web 项目

第一步 : 环境配置

我们把 proxool 用的 jar 包和数据库的驱动包拷贝到 WEB-INF/lib 下面。

第二步 : 配置文件配置

         我们建一个 proxool.xml 文件,文件名可以随意,不过大家都用这个了,约定俗成吧。配置文件如下,方便以后拷贝使用 :

<? xml version = "1.0" encoding = "UTF-8" ?>

    < something-else-entirely >

       < proxool >

           <!-- 数据源的别名 -->

           < alias > dbtest </ alias >

           <!--url 连接串 -->

           < driver-url >

jdbc:oracle:thin:@10.135.6.155:1521:oanet

</ driver-url >

           <!-- 数据库 jdbc 驱动类 -->

           < driver-class > oracle.jdbc.driver.OracleDriver </ driver-class >

           < driver-properties >

              <!-- 用户名 -->

              < property name = "user" value = "AMS_TEST" />

              <!-- 密码 -->

              < property name = "password" value = "1" />

           </ driver-properties >

           <!-- 最大连接数 ( 默认 5), 超过了这个连接数 , 再有请求时 , 就排在队列中等候 ,

              最大的等待请求数由 maximum-new-connections 决定 -->

           < maximum-connection-count > 100 </ maximum-connection-count >

           <!-- 最小连接数 ( 默认 2)-->

           < minimum-connection-count > 10 </ minimum-connection-count >

           <!--proxool 自动侦察各个连接状态的时间间隔 ( 毫秒 ), 侦察到空闲的连接就马上回收

                         , 超时的销毁 默认 30-->

           < house-keeping-sleep-time > 90000 </ house-keeping-sleep-time >

           <!-- 没有空闲连接可以分配而在队列中等候的最大请求数 , 超过这个请求数的

                         用户连接就不会被接受 -->

           < maximum-new-connections > 10 </ maximum-new-connections >

           <!-- 最少保持的空闲连接数 ( 默认 2)-->

           < prototype-count > 5 </ prototype-count >

           <!-- 在使用之前测试 -->

           < test-before-use > true </ test-before-use >

           <!-- 用于保持连接的测试语句 -->

           < house-keeping-test-sql > select sysdate from dual </ house-keeping-test-sql >

       </ proxool >

    </ something-else-entirely >

 

可以配置多个 something-else-entirely 标签来配置多个池。

接下来我们在 web.xml 中注册 proxool ,让 tomcat 启动时就加载 proxool 配置文件初始化 : 我们在 web.xml 文件加入以下配置 :

< servlet >

    < servlet-name > ServletConfigurator </ servlet-name >

  <!-- ServletConfigurator: 加载并初始化 proxool.xml 文件 , 因为它是连接数据库的 . 其他很多模块都用到数据 , 所以必须首先加载它 -->

< servlet-class > org.logicalcobwebs.proxool.configuration.ServletConfigurator </ servlet-class >

    < init-param >

      < param-name > xmlFile </ param-name >

       <!—- 配置文件 -->

      < param-value > WEB-INF/proxool.xml </ param-value >

</ init-param >

<!-- load-on-startup: 数值越小,就会先被加载初始化-->

    < load-on-startup > 1 </ load-on-startup >

  </ servlet >

  < servlet >

    < servlet-name > proxool </ servlet-name >

    < servlet-class > org.logicalcobwebs.proxool.admin.servlet.AdminServlet </ servlet-class >

  </ servlet >

  < servlet-mapping >

< servlet-name > proxool </ servlet-name >

<!—- 通过这个访问路径用来 监控数据库连接池的连接情况 -->

    < url-pattern > /proxool </ url-pattern >

  </ servlet-mapping >

当然你也可以配置受保护域,只让 TOMCAT 管理员才能查看连接池的信息 .

都配置好了。其实 proxool 提供了很多的配置方式 :properties,xml,java.util.Properties 等来配置,配置方式多样化,大家可以参考官方文档 .

第三步:测试。

     我在 java 代码中进行测试的时候,就是在 java 类中写个 main 方法时,总是会出现 : Attempt to refer to a unregistered pool by its alias 'XXX'(XXX 连接池的别名)

网上查了下说是: 连接池的应用本来就是要通过服务器调用的,如果你在java 文件中调用,就没有涉及到服务器,这样就会报错了!

如果你在java 文件中用下面这种方式加载连接池是可用的:

Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");

Connection conn = DriverManager.getConnection("proxool. 别名:driver:url"," 用户名"," 密码");

试了下确实可以呵。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值