读书人

proxool施用详解

发布时间: 2012-06-26 10:04:13 作者: rapoo

proxool应用详解

?

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

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

<?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>

<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>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 aunregistered pool by its alias 'XXX'(XXX连接池的别名)

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

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

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

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

试了下确实可以呵。

?

?

读书人网 >开源软件

热点推荐