Java数据库连接池超强方法.doc
文本预览下载声明
Java数据库连接池超强方法!
分类:java技术
网上看到一位大牛写的连接类。此类非常简单,免去了网上众多资料里所说的麻烦的tomcat配置,更强的是它可以通用!不仅oracle,mysql,sqlserver2000都行,因为它依据的是你自己连接数据库的驱动。当然首先你要保证你拥有一个能连接自己数据库的对应驱动类。如下面以mysql为例:
先附上牛人(可惜没留名!)的原码:来自 “豆豆在线”package myDB;import java.io.*;import java.sql.*;import java.util.*;import java.util.Date;
/*** 管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接* 池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.*/public class DBConnectionManager {static private DBConnectionManager instance; // 唯一实例static private int clients;
private Vector drivers = new Vector();private PrintWriter log;private Hashtable pools = new Hashtable();
/*** 返回唯一实例.如果是第一次调用此方法,则创建实例** @return DBConnectionManager 唯一实例*/static synchronized public DBConnectionManager getInstance() {if (instance == null) {instance = new DBConnectionManager();}clients++;return instance;}
/*** 建构函数私有以防止其它对象创建本类实例*/private DBConnectionManager() {init();}
/*** 将连接对象返回给由名字指定的连接池** @param name 在属性文件中定义的连接池名字* @param con 连接对象*/public void freeConnection(String name, Connection con) {DBConnectionPool pool = (DBConnectionPool) pools.get(name);if (pool != null) {pool.freeConnection(con);}}
/*** 获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数* 限制,则创建并返回新连接** @param name 在属性文件中定义的连接池名字* @return Connection 可用连接或null*/public Connection getConnection(String name) {DBConnectionPool pool = (DBConnectionPool) pools.get(name);if (pool != null) {return pool.getConnection();}return null;}
/*** 获得一个可用连接.若没有可用连接,且已有连接数小于最大连接数限制,* 则创建并返回新连接.否则,在指定的时间内等待其它线程释放连接.** @param name 连接池名字* @param time 以毫秒计的等待时间* @return Connection 可用连接或null*/public Connection getConnection(String name, long time) {DBConnectionPool pool = (DBConnectionPool) pools.get(name);if (pool != null) {return pool.getConnection(time);}return null;}
public int getClient(){?return clients;}
/*** 关闭所有连接,撤销驱动程序的注册*/public synchronized void release() {// 等待直到最后一个客户程序调用if (--clients != 0) {return;}
Enumeration allPools = pools.elements();while (all
显示全部