poolman 学习笔记

今天学习了poolman的一些简单用法,做了笔记,希望对初学者有些帮助。

poolman是一个优秀的连接池。下载地址为http://telia.dl.sourceforge.net/sourceforge/poolman/

下面我简单介绍一下安装过程,更详细的资料请看UserGuide

  (1) 将poolman.jar(jdbc2_0-stdext.jar,jmxri.jar,jta.jar,xerces.jar)加入classpath;
     
  (2) 配置poolman.xml,这个xml文件声明池的各种信息。
      各属性说明如下:
      <dbname> 池名
      <jndiName> JNDI 名
      <driver> 数据库驱动,如:org.gjt.mm.mysql.Driver
      <url> 数据库的连接地址
      <username><password>连接数据库的用户名及密码
      <initialConnections> 池的初始连接数,默认值为1
      <minimumSize> 最少连接数,默认值为0
      <maximumSize> 最大的连接数,默认值为Inter.MAX_VALUE (2的31次方-1)
      <connectionTimeout> 连接最长保留时间,默认值为1200秒
      <userTimeout> 数据库库操作的最长时间,默认值20秒
      <logFile> 日志文件地址,默认为system.out
      <debugging> 是否为调试状态,默认为false
      <cacheEnabled> 缓存resultse ,默认false
      <cacheRefreshInterval> 缓存刷新间隔,默认:30秒

  (3) 下面我们使用SQLManager来获取连接
     首先我们先用一个xml文件存放连接池的相关信息:
      <?xml version="1.0" encoding="UTF-8"?>
       <poolman>
          <datasource>
           <dbname>default</dbname>
          <jndiName>default</jndiName>
          <driver>com.mysql.jdbc.Driver</driver>
          <url>jdbc:mysql://localhost:3306/TEST</url>
          <username>aaa</username>
          <password>aaa</password>
          <poolPreparedStatements>false</poolPreparedStatements>
          <initialConnections>3</initialConnections>
          <minimumSize>0</minimumSize>
          <maximumSize>10</maximumSize>
          <maximumSoft>true</maximumSoft>
          <connectionTimeout>300</connectionTimeout>
          <userTimeout>0</userTimeout>
          <skimmerFrequency>300</skimmerFrequency>
          <shrinkBy>10</shrinkBy>
          <transactionTimeout>100</transactionTimeout>
          <cacheEnabled>false</cacheEnabled>
          <cacheSize>10</cacheSize>
          <cacheRefreshInterval>120</cacheRefreshInterval>
          <removeOnExceptions>false</removeOnExceptions>
       </datasource>
     </poolman>

   我们把这个文件命名为db.xml,并且放在c:\下。

   下面这个是核心的class文件:
    package net.ijsp.connectbroker;
   
    import com.codestudio.util.ObjectPool;
    import com.codestudio.util.SQLManager;
  
    public class PoolmanConnectBroker {

        private static SQLManager sqlManager ;

 public PoolmanConnectBroker()
    {
 System.out.println("2222222222222222222222");
  File f = new File("c:/dbi.xml");
  String s = f.getAbsolutePath();
  System.out.println(s);
  if(sqlManager == null)
   sqlManager = SQLManager.getInstance(s);
  System.out.println(sqlManager);
    }

    public Connection getConnection()
    {
 Connection c = null;
        try{
    c = sqlManager.requestConnection();
        }catch(Exception e) {
    System.out.println(e);
 }
 System.out.println(c);
 return c;
    }
  ..........
  }

   这样我们就可以在jsp文件里调用这个池了^_^
  <%@page import ="net.ijsp.connectbroker.*,
           java.sql.*"%>

  <%
    PoolmanConnectBroker pool = new PoolmanConnectBroker();
    Connection conn = pool.getConnection();
   file://out.println(conn);
   conn.close();
  %>

  在使用过程中我还遇到了一个问题,用org.gjt.mm.mysql.Driver做为mysql的驱动程序时会出现jndi的错误,换成mysql的官方驱动就可以了。
  这是我初学的简单知识,希望能与您进行讨论,我的mail:ccjsmile@sohu.com http://www.ijsp.net