今天學習了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的官方驅動就可以了