proxool数据连接池 java代码

2009-09-17 22:16

package com.job36.database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.ProxoolFacade;
import org.logicalcobwebs.proxool.admin.SnapshotIF;


public class ConnectionPool{

private static int activeCount = 0;

private static ConnectionPool instance;

public ConnectionPool() {

}

private void init() throws SQLException {

}

/**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
* 
* @return ConnectionPool 唯一实例
*/
public static ConnectionPool getInstance() {
if (instance == null) {
try {
instance = new ConnectionPool();
instance.init();
} catch (java.sql.SQLException sqle) {
System.out.println("getInstance() Exception1:"
+ sqle.toString());
}
}
return instance;
}

/**
* 获取连接 getConnection
* 
* @param name
* @return
*/
public Connection getConnection() throws SQLException {
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
Connection conn = DriverManager.getConnection("proxool.DBPool");
showSnapshotInfo();
return conn;
} catch (Exception ex) {
System.out.println("获取连接失败..");
showSnapshotInfo();
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) throws SQLException {
return getConnection();
}

/**
* 释放连接 freeConnection
* 
* @param conn
*/
public void free(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) {
free(con);
}
}

 WEB.xml

<filter>
<filter-name>AdminLoginFilter</filter-name>
<filter-class>
com.job36.filter.AdminLoginFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>AdminLoginFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator
</servlet-class>
<init-param>
<param-name>propertyFile</param-name>
<param-value>
WEB-INF\classes\proxool.properties
</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet>
<servlet-name>Admin</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.admin.servlet.AdminServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/job36/pool</url-pattern>
</servlet-mapping>

 proxool.properties文件

jdbc-0.proxool.alias=DBPool
jdbc-0.proxool.driver-url=jdbc:inetdae7:192.168.3.251:1433?database=blog&charset=GBK
jdbc-0.proxool.driver-class=com.inet.tds.TdsDriver
jdbc-0.user=sa
jdbc-0.password=job36web
jdbc-0.proxool.house-keeping-sleep-time=40000
jdbc-0.proxool.house-keeping-test-sql=SELECT ''
jdbc-0.proxool.maximum-connection-count=50
jdbc-0.proxool.minimum-connection-count=15
jdbc-0.proxool.maximum-connection-lifetime=18000000
jdbc-0.proxool.simultaneous-build-throttle=5
jdbc-0.proxool.recently-started-threshold=40000
jdbc-0.proxool.overload-without-refusal-lifetime=50000
jdbc-0.proxool.maximum-active-time=60000
jdbc-0.proxool.verbose=true
jdbc-0.proxool.trace=true
jdbc-0.proxool.fatal-sql-exception=Fatal error
jdbc-0.proxool.prototype-count=2
jdbc-0.proxool.statistics-log-level=ERROR
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值