1、 Proxool 简介java
一种java数据库链接池技术。是sourceforge下的一个开源项目,这个项目提供了一个健壮已用的链接池,同时提供了这个链接池的监控功能。web
目前最为常见的三种JDBC链接池技术:spring
C3P0 通常运用于开发当中;sql
DBCP Hibernate3.0开始,已经再也不支持dbcp了,由于发现dbcp有bug,在某些 状况下回产生不少空链接切不被释放。数据库
Proxool 在Hibernate4.3.0Beta1中没有解决Proxool链接池不可用的问题。由于Hibernate4中用到的Proxool链接池提供者忘记了实现一个Configurable接口致使没有办法经过配置来生产链接,最终致使在建立SessionFactory的时候产生空指针异常。session
2、在项目中配置Proxool
oracle
一、 首先须要proxool的两个jar包放到工程的lib包下:proxool-0.9.1.jar proxool-cglib.jarapp
二、 在web.xml中配置两个Servlet,一个是加载proxool配置文件的,一个是proxool的资源监控程序,ui
【注意:proxool在web.xml中的加载顺序必须在spring以前加载(即配置:<load-on-startup>0</load-on-startup>),同时须要保证两个配置文件中的别名{ alias }要一致,不然会报错。】url
在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便可看到页面(如图:)
3、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>