poolman数据库连接池

来源:互联网 发布:知乎 正义联盟 编辑:程序博客网 时间:2024/06/05 20:26
 

由于tomcat自带的连接池有性能问题,因此采用第三方的开源连接池,比如poolman2.0(中文文档比较少)
1、下载poolman的资源,地址为:http://telia.dl.sourceforge.net/sourceforge/poolman/;
     将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秒
     
      **把poolman.xml文件放置在\WEB-INF\classes\conf路径下
      3、在web.xml下配置初始化连接池的servlet(该servlet似乎也可以不配置,配置的好处是为了方便poolman.xml改变放置路径)
        <servlet>
<servlet-name>PoolmanConnectBroker</servlet-name>
<servlet-class>com.car.pub.PoolmanConnectBroker</servlet-class>
<init-param>
<param-name>poolman_xml_file</param-name>
<param-value>conf/poolman.xml</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
4、编写关键的PoolmanConnectBroker类:

package   com.car.pub;    

import   com.codestudio.util.ObjectPool;    
import   com.codestudio.util.SQLManager;  
import   java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.log4j.Logger;

public   class   PoolmanConnectBroker extends HttpServlet   {    
private final static Logger Log = Logger.getLogger(PoolmanConnectBroker.class);
    private   static   SQLManager   sqlManager   ;    
    public void init() throws ServletException {
   String prefix = getServletContext().getRealPath("/");
   String file = getServletConfig().getInitParameter("poolman_xml_file");
   File ff=new File(file);
   String filepath=ff.getPath();
  
   if(sqlManager   ==   null)      
    sqlManager   =   SQLManager.getInstance(filepath);    
   }
   
public   PoolmanConnectBroker()    
{  
    
}    

public   Connection   getConnection()    
{    
Connection   c   =   null;    
    try{    
    c   =   sqlManager.requestConnection();    
    }catch(Exception   e)   {    
    Log.debug(e);    
    }        
    return   c;    
}    
  
}    
5、连接池的使用:
PoolmanConnectBroker pool = new PoolmanConnectBroker();
   Connection conn = pool.getConnection();
conn.close();


附件:我成功配置的poolman.xml样例内容为:
   <?xml   version="1.0"   encoding="UTF-8"?>  
   
<poolman>  
   
      <management-mode>local</management-mode>  
   
      <!--   ==========================================================   -->  
      <!--   These   entries   are   an   example   of   JDBC   Connection   pooling.       -->  
      <!--   Many   of   the   parameters   are   optional.   Consult   the                       -->  
      <!--   UsersGuide.html   doument   and   the   poolman.xml.template   file     -->  
      <!--   for   guidance   and   element   definitions.                                             -->  
      <!--   ==========================================================   -->  
   
      <datasource>  
   
          <!--   ==============================   -->  
          <!--   Physical   Connection   Attributes   -->  
          <!--   ==============================   -->  
   
          <!--   Standard   JDBC   Driver   info   -->  
   
          <dbname>jdbc/car</dbname>  
          <jndiName>car</jndiName>  
          <driver>COM.ibm.db2.jdbc.app.DB2Driver</driver>  
          <url>jdbc:db2:car</url>  
           
          <username>db2admin</username>  
          <password>admin</password>  
   
          <minimumSize>0</minimumSize>  
          <maximumSize>10</maximumSize>  
          <connectionTimeout>600</connectionTimeout>  
          <userTimeout>12</userTimeout>  
          <shrinkBy>10</shrinkBy>  
   
          <logFile>d:\log\poolman.log</logFile>  
          <debugging>true</debugging>  
   
          <!--   Query   Cache   Attributes-->  
   
          <cacheEnabled>false</cacheEnabled>  
          <cacheSize>20</cacheSize>  
          <cacheRefreshInterval>120</cacheRefreshInterval>  
   
      </datasource>  
       
       
   
      <!--   DISABLED   FOR   PRODUCTION  
      <admin-agent>  
          <class>com.sun.jdmk.comm.HtmlAdaptorServer</class>  
          <name>Adaptor:name=html</name>  
          <maxClients>10</maxClients>  
          <port>8082</port>  
      </admin-agent>  
      -->  
   
</poolman>

原创粉丝点击