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