Proxool在web項目中的配置,以及與spring三、hibernate4的集成

1、 Proxool 簡介java

    一種java數據庫鏈接池技術。是sourceforge下的一個開源項目,這個項目提供了一個健壯已用的鏈接池,同時提供了這個鏈接池的監控功能。web

     目前最爲常見的三種JDBC鏈接池技術:spring

  1. C3P0  通常運用於開發當中;sql

  2. DBCP Hibernate3.0開始,已經再也不支持dbcp了,由於發現dbcp有bug,在某些 狀況下回產生不少空鏈接切不被釋放。數據庫

  3. 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>
相關文章
相關標籤/搜索