poolman數據庫連接池

 

由於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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章