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>