一、 Proxool 简介
----一种java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供了一个健壮
已用的连接池,同时提供了这个连接池的监控功能。
目前最为常见的三种JDBC连接池技术:
1):C3P0 一般运用于开发当中;
2):DBCP Hibernate3.0开始,已经不再支持dbcp了,因为发现dbcp有bug,在某些
情况下回产生很多空连接切不被释放。
3):Proxool 在Hibernate4.3.0Beta1中没有解决Proxool连接池不可用的问题。
因为Hibernate4中用到的Proxool连接池提供者忘记了实现一个Configurable接口导致
没有办法通过配置来生产连接,最终导致在创建SessionFactory的时候产生空指针异常。
二、在项目中配置Proxool
1、 首先需要proxool的两个jar包放到工程的lib包下:proxool-0.9.1.jar proxool-cglib.jar
2、 在web.xml中配置两个Servlet,一个是加载proxool配置文件的,一个是proxool的资源监控程序,
【注意:proxool在web.xml中的加载顺序必须在spring之前加载(即配置:<load-on-startup>0</load-on-startup>),
同时需要保证两个配置文件中的别名{ alias }要一致,否则会报错。】
-----------------------------在web.xml中配置两个servlet-------------------------------------------------------
<!-- 配置加载proxool配置文件 -->
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool-conf.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<!-- 配置proxool资源监控程序 -->
<servlet>
<servlet-name>adminP</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.admin.servlet.AdminServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adminP</servlet-name>
<url-pattern>/adminp</url-pattern>
</servlet-mapping>
在WEB-INF/proxool-conf.xml文件内容为:
<?xml version="1.0" encoding = "utf-8"?>
<something-else-entirely>
<proxool>
<!-- 配置proxool别名 -->
<alias>proxool</alias>
<!-- 配置连接的数据库信息 -->
<driver-url>jdbc:oracle:thin:@192.168.1.104:1521:orcl</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="anhuidianxin" />
<property name="password" value="anhuidianxin" />
</driver-properties>
<!-- proxool自动侦查各个连接状态的时间间隔(毫秒),侦查到空闲的连接就马上 回收,超时的销毁 -->
<house-keeping-sleep-time>900000</house-keeping-sleep-time>
<!-- 最大连接数 -->
<maximum-connection-count>10</maximum-connection-count>
<!-- 最小连接数 -->
<minimum-connection-count>3</minimum-connection-count>
<!--连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.新的连接将被建立 -->
<prototype-count>3</prototype-count>
<!-- 可一次建立的最大连接数。那就是新增的连接请求,但还没有可供使用的连接,默认为10 -->
<simultaneous-build-throttle>4</simultaneous-build-throttle>
<!-- 日志统计跟踪类型。参数“ERROR”或 “INFO” -->
<statistics-log-level>INFO</statistics-log-level>
</proxool>
</something-else-entirely>
访问http://localhost:8080/项目名称/adminp/proxool即可看到页面(如图:)
三、proxool与spring的集成 (在spring配置文件中数据源信息的配置,此处的spring配置文件名为:applicationContext.xml)
在spring配置文件中配置数据源(使用proxool数据库连接池),配置如下
<!-- 配置数据源,proxool数据库连接池 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver" />
<!-- proxool配置文件中的别名要一致 -->
<property name="url" value="proxool.proxool" />
</bean>
<!-- 配置sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">none</prop>
</props>
</property>
</bean>