你的位置:首页 > Java教程

[Java教程]proxool在web环境中的使用

Proxool 简介

     Proxool连接池是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。开源项目地址是:http://proxool.sourceforge.net/

      Proxool提供了很多配置属性,其属性意义如下,当然还是建议直接查看官方文档http://proxool.sourceforge.net/properties.html:

 

                                                                      1.配置Proxool.

<?<something-else-entirely>
 <proxool>

<alias>dbname</alias> <!-- 数据源的别名 -->

<!-- 数据库连接信息 -->
<driver-url>jdbc:mysql://localhost:3306/zz</driver-url>

<driver-class>com.mysql.jdbc.Driver </driver-class>

<driver-properties>
<property name="user" value="root"/>
<property name="password" value="123123"/>
<property name="useUnicode" value="true"/> <!-- 使用unicode字符编码集 -->
<property name="characterEncoding" value="utf-8"/> <!-- 字符编码为utf-8 -->
</driver-properties>
  <!-- 最大连接数 -->
<maximum-connection-count>100</maximum-connection-count>

<!-- 最小连接数 -->
<minimum-connection-count>10</minimum-connection-count>
  <!-- 最小增量 -->
<simultaneous-build-throttle>10</simultaneous-build-throttle>

<!-- 定期巡检时间(毫秒) -->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>

<prototype-count>5</prototype-count>
  <!-- 使用前检测 -->
<test-before-use>true</test-before-use> <!--这是MySQL的写法,各个数据库有差异-->
  <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> 
<!--这是Oracle的写法,各个数据库有差异-->
    <house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql> 
 </proxool>

</something-else-entirely>

                                                                         2.配置web.

 <servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator
</servlet-class>
<init-param>
<param-name> <!--proxool.
<param-value>WEB-INF/proxool.
   </init-param>
<load-on-startup>1</load-on-startup>
</servlet>                3.获取连接
 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6  7 /** 8  * @author ctd 9  *10 */11 public class DBUtils {12  13   private static DBUtils me=new DBUtils();14   15   private DBUtils() {}16   17   public static DBUtils getInstance()18   {19     return me;20   }21   22   /**23    * 获取数据库连接24    * @return25   */26   public Connection getConn()27   {28     29     Connection conn=null;30     31     try {32       //查看类路径中是否存在这个驱动入口类33       Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");34       conn=DriverManager.getConnection("proxool.dbname");//proxool.数据库别名35       36     } catch (ClassNotFoundException e) {37       // TODO Auto-generated catch block38       e.printStackTrace();39     } catch (SQLException e) {40       // TODO Auto-generated catch block41       e.printStackTrace();42     } 43     44     return conn;45     46   }47   48   /**49    * 释放数据库资源50    * @param conn51    * @param pstmt52    * @param rset53   */54   public void ReleaseRes(Connection conn,PreparedStatement pstmt,ResultSet rset)55   {56     try{57      if(rset!=null) rset.close();58      if(pstmt!=null) pstmt.close();59      if(conn!=null) conn.close();60     }catch(SQLException e)61     {62       e.printStackTrace();63     }64   }68 }