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的官方驱动就可以了。