Proxool 《转》

在阅读了Proxool的官方指南后,我写了个简单测试,扔出来,希望能对大家有用。

  环境:

  JDK 1.5

  proxool-0.9.1.zip

  Oracle 10g

  http://ncu.dl.sourceforge.net/project/proxool/proxool/0.9.1/proxool-0.9.1.zip

  Proxool准确说还算不上一个连接池,因为里面没有一个获取DataSource对象的方法,也没有一个获取“**Pool”的途径。因此要使用Proxool连接池,有两条路可走,一是自己实现一个连接池的管理工具,二是通过开源的框架来使用,因为好多开源框架实现了池管理功能,比如Spring、Hibernate、iBatis等等。

  Proxool的性能据说还不错,常常与Spring、Hibernate等整合使用,倒很方便。如果你是做一个Java应用,那么Proxool不是盏省油的灯,你要自己实现连接池管理,如果水平一般,代码漏洞会很多。

  这里我不打算实现什么连接池管理工具,也不使用开源框架,而是仅仅利用Proxool提供的功能来做一个数据库操作。

  1、写Proxool的配置

  Proxool提供了一个接口,用来读取xml格式或properties格式的配置信息,用来初始化Proxool所需的参数。这里我用xml配置,当然这个XML是网上找的,我懒得写,仅仅改吧改吧能用。


  <?xml version="1.0" encoding="UTF-8"?> 
<something-else-entirely> 
        <proxool> 
                <alias>timalias</alias> 
                <!--数据源的别名--> 
                <driver-url>jdbc:oracle:thin:@192.168.104.192:1521:tim</driver-url> 
                <!--url连接串--> 
                <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 
                <!--驱动类--> 
                <driver-properties> 
                        <property name="user" value="tim"/> 
                        <!--用户名--> 
                        <property name="password" value="tim_8968888"/> 
                        <!--密码--> 
                </driver-properties> 
                <!--最大连接数(默认5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 --> 
                <maximum-connection-count>100</maximum-connection-count> 
                <!--最小连接数(默认2个)--> 
                <minimum-connection-count>10</minimum-connection-count> 
                <!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒--> 
                <house-keeping-sleep-time>90000</house-keeping-sleep-time> 
                <!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--> 
                <maximum-new-connections>10</maximum-new-connections> 
                <!--最少保持的空闲连接数(默认2个)--> 
                <prototype-count>5</prototype-count> 
                <!--在使用之前测试--> 
                <test-before-use>true</test-before-use> 
                <!--用于保持连接的测试语句 --> 
                <house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql> 
        </proxool> 
</something-else-entirely>


      import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.Statement;
  /**
  * Created by IntelliJ IDEA.
  *
  * @author leizhimin 2009-10-10 17:59:47
  */
  public class TestProxool {
  public static String dburl = "jdbc:oracle:thin:@192.168.104.192:1521:tim";
  public static String user = "tim";
  public static String password = "tim_8968888";
  /**
  * JDBC方式测试
  *
  * @throws Exception
  */
  public static void test1() throws Exception {
  String testsql = "select * from village t where lastid = 346";
  //1:注册驱动类
  Class.forName("oracle.jdbc.driver.OracleDriver");
  //2:创建数据库连接
  Connection conn = DriverManager.getConnection(dburl, user, password);
  //3:创建执行SQL的对象
  Statement stmt = conn.createStatement();
  //4:执行SQL,并获取返回结果
  ResultSet rs = stmt.executeQuery(testsql);
  //5:处理返回结果,此处打印查询结果
  while (rs.next()) {
  System.out.print(rs.getLong("id") + "/t");
  System.out.print(rs.getString("name") + "/t");
  System.out.println();
  }
  //6:关闭数据库连接
  conn.close();
  }
  /**
  * proxool方式测试
  *
  * @throws Exception
  */
  public static void test2() throws Exception {
  //Java应用中先要加载配置文件,否则谁知道你配置给谁用的
  JAXPConfigurator.configure("F://_test//synorg//src//proxool.xml", false);
  String testsql = "select * from village t where lastid = 346";
  //1:注册驱动类,这次这个驱动已经不是Oracle的驱动了,是Proxool专用的驱动
  Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
  //2:创建数据库连接,这个参数是一个字符串,是数据源的别名,在配置文件中配置的timalias,参数格式为:proxool.数据源的别名
  Connection conn = DriverManager.getConnection("proxool.timalias");
  //3:创建执行SQL的对象
  Statement stmt = conn.createStatement();
  //4:执行SQL,并获取返回结果
  ResultSet rs = stmt.executeQuery(testsql);
  //5:处理返回结果,此处打印查询结果
  while (rs.next()) {
  System.out.print(rs.getLong("id") + "/t");
  System.out.print(rs.getString("name") + "/t");
  System.out.println();
  }
  //6:关闭数据库连接
  conn.close();
  }
  public static void main(String[] args) throws Exception {
  test2();
  }
  }

 

转自:http://java.chinaitlab.com/base/795436_2.html

你可能感兴趣的:(Proxool 《转》)