proxool是一个开源的数据库连接池。官方网站是:http://proxool.sourceforge.net/
要使用这个连接池需要倒入两个Jar包,proxool-0.9.1.jar和proxool-cglib.jar。可以从官网下载最新的包。
这个连接池主要就是一个proxool.xml的配置文件,基本配置如下:
<?xml version="1.0" encoding="UTF-8"?> <something-else-entirely> <proxool> <alias>DBPool</alias> <driver-url> jdbc:oracle:thin:@192.168.56.101:1521:orcl </driver-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <driver-properties> <property name="user" value="XXX"/> <property name="password" value="XXX"/> </driver-properties> <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 --> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 --> <simultaneous-build-throttle>20</simultaneous-build-throttle> <!-- 最少保持的空闲连接数 --> <prototype-count>5</prototype-count> <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 --> <maximum-connection-count>50</maximum-connection-count> <!-- 最小连接数 --> <minimum-connection-count>10</minimum-connection-count> <!-- 一个活动连接的最长时间15分钟,单位毫秒 --> <maximum-active-time>900000</maximum-active-time> <!-- 一个连接的最长活动时间1小时,单位毫秒 --> <maximum-connection-lifetime>3600000</maximum-connection-lifetime> </proxool> </something-else-entirely>
如果是使用JDBC连接,需要先加载配置文件:
// Initialize PostgreDB connect pool's environment try { JAXPConfigurator.configure(dbConfigPath, false); } catch (ProxoolException e) { sysLog.error("POSTGRE connect pool error" + e.getMessage()); } catch (Exception e) { sysLog.error("Unkown error whern start POSTGRE connect pool" + e.getMessage()); }
然后在建立Connection的时候从这个配置文件中读取:
Connection connection = null; try { connection = DriverManager.getConnection("proxool.DBPool"); ......
注意,这里的“proxool.DBPool”是指的proxool.xml配置文件中“<alias>DBPool</alias>”一项。
其它的与普通JDBC没有什么区别,使用很方便。
如果是使用Hibernate,那么在Hibernate配置文件中指定连接池就可以了,代码无需改动
<property name="hibernate.connection.provider_class"> org.hibernate.connection.ProxoolConnectionProvider </property> <!--hibernate.proxool.pool_alias这里就是用我们上面提到的连接池的别名--> <property name="hibernate.proxool.pool_alias">DBPool</property> <!--hibernate.proxool.xml是向Hibernate声明连接池的配置文件位置,可以用相对或绝对路径,用相对路径时要注意一定在要Path范围内!不然会抛出异常。--> <property name="hibernate.proxool.xml">proxool.xml</property>