如何在应用程序中配Proxool连接池

来源:互联网 发布:axure安装包mac 编辑:程序博客网 时间:2024/06/04 20:13
在数据库应用程序中,数据库连接的取得是一个耗费时间的动作,为了避免花费时间在连接的取得与关闭上,我们会将连接资源放置在一个池中,需要连接时就从池中取得,不需要连接时就将之放回池中,以求重复利用连接,连接池也担任连接数量、连接时间的控制等等动作。
  Proxool 是一个开放源码的连接池,在使用与设置上都十分的方便,Proxool 最新的版本是0.8.3,您可以在以下的网址下载:
  http://proxool.sourceforge.net/index.html
  网站上的User Guide提供相当简单的入门文件,您可以直接先从这些文件开始下手,而下面这个实例提供您一个快速入门的范例,让您知道如何通过Proxool取得数据库连接,这里所使用的是MySQL数据库。
  为了要使用Java来进行连接,首先您所需要的是当然是JDBC驱动程序,首先,要从 这里 下载驱动程序的合适的 JAR 文件。下载名为mysql-connector-java-5.0.0-beta.zip 的文件。接下来,将文件解压缩至一个临时目录。最后,将包含驱动程序的文件从解压缩的目录结构复制到您的 CLASSPATH可以存取的位置, 在我下载的驱动程序版本中,文件的名称是mysql-connector-java-5.0.0-beta-bin.jar
  如果是桌面应用程式,您可以将之加入环境变量 CLASSPATH中。如我的BAT文件:
  email.bat
  set CLASSPATH=c:\test\jar\proxool-0.8.3.jar;c:\test\jar\mysql-connector-java-5.0.0-beta-bin.jar;%CLASSPATH%
  你能用多种方法配置Proxool,这里我们使用属性文件:Proxool.properties,内容如下
  jdbc-0.proxool.alias=mysql
  jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver
  jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/email?user=root;password=
  jdbc-0.proxool.maximum-connection-count=20
  jdbc-0.proxool.prototype-count=4
  jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE
  jdbc-0.proxool.verbose=true
  jdbc-0.proxool.statistics=10s,1m,1d
  jdbc-0.proxool.statistics-log-level=ERROR
  其中mysql是连接池的別名(alias),是一个用来参考至连接池的名称,取得连接,接下來就按照JDBC的操作使用即可,在不使用连接的时候,可以关闭它将连接放回连接池。
  

下面这个程序是个简单测试Proxool连接取得的范例:

import java.sql.*;import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;  import org.logicalcobwebs.proxool.ProxoolException;public class DBTest {                                                                                   public static void main(String[] args) {        Connection conn=null;        try {           PropertyConfigurator.configure("Proxool.properties");            conn = DriverManager.getConnection("proxool.mysql");            if(conn!=null)                System.out.println("数据连接测试成功!");            Statement Stmt=conn.createStatement();             ResultSet Rst=null;             Rst=Stmt.executeQuery("select * from email");            while(Rst.next())                   System.out.println(Rst.getString("email_user"));        }catch(SQLException e) {           System.out.println("error"+e);        }catch(ProxoolException e1){           System.out.println(e1);        } finally{            try{                 if (conn != null)                       conn.close();            }catch(SQLException e2){                  System.out.println(e2);            }                         }    }}