主页 http://proxool.sourceforge.net/
1 在WEB-INF中新建xml文件proxool.xml
2 在web.xml中加入新的servlet
3 程序实现方法
1 在WEB-INF中新建xml文件proxool.xml
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>dbpool</alias>
<driver-url>
<![CDATA[
jdbc:mysql://192.168.1.2/db_tailor?useUnicode=true&characterEncoding=GBK
]]>
</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="user"/>
<property name="password" value="pas"/>
</driver-properties>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<prototype-count>2</prototype-count>
<maximum-connection-count>10</maximum-connection-count>
<minimum-connection-count>5</minimum-connection-count>
</proxool>
</something-else-entirely>
2 在web.xml中加入新的servlet
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator
</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
3 程序实现方法
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.ProxoolFacade;
import org.logicalcobwebs.proxool.admin.SnapshotIF;
public class PoolManager {
private static int activeCount = 0;
public PoolManager(){
}
/**
* 获取连接
* getConnection
* @param name
* @return
*/
public Connection getConnection() {
try{
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
//proxool驱动类
Connection conn = DriverManager.getConnection("proxool.dbpool");
//此处的DBPool是在proxool.xml中配置的连接池别名
showSnapshotInfo();
return conn;
}catch(Exception ex){
ex.printStackTrace();
}
return null;
}
/**
* 此方法可以得到连接池的信息
* showSnapshotInfo
*/
private void showSnapshotInfo(){
try{
SnapshotIF snapshot = ProxoolFacade.getSnapshot("DBPool", true);
int curActiveCount=snapshot.getActiveConnectionCount();
//获得活动连接数
int availableCount=snapshot.getAvailableConnectionCount();
//获得可得到的连接数
int maxCount=snapshot.getMaximumConnectionCount() ;
//获得总连接数
if(curActiveCount!=activeCount)
//当活动连接数变化时输出的信息
{
System.out.println("活动连接数:"+curActiveCount+"(active) 可得到的连接数:"+availableCount+"(available) 总连接数:"+maxCount+"(max)");
activeCount=curActiveCount;
}
}catch(ProxoolException e){
e.printStackTrace();
}
}
/**
* 获取连接
* getConnection
* @param name
* @return
*/
public Connection getConnection(String name){
return getConnection();
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public void freeConnection(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接
* freeConnection
* @param name
* @param con
*/
public void freeConnection (String name,Connection con){
freeConnection(con);
}
public void getQuery() {
try {
Connection conn = getConnection();
if(conn != null){
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from T_account");
int c = rs.getMetaData().getColumnCount();
while(rs.next()){
System.out.println();
for(int i=1;i<=c;i++){
System.out.print(rs.getObject(i));
}
}
rs.close();
}
freeConnection(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}