首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > JSP教程 > 正文
Google
JAVA中的动态代理实现数据库连接池
来源:赛迪网 2008年04月28日 08:47 网友评论:0条 点击:

首先,我们先定义一个数据库连接池参数的类,定义了数据库的JDBC驱动程序类名,连接的URL以及用户名口令等等一些信息,该类是用于初始化连接池的参数,具体定义如下:

public class ConnectionParam implements Serializable

{

private String driver; //数据库驱动程序

private String url; //数据连接的URL

private String user; //数据库用户名

private String password; //数据库密码

private int minConnection = 0; //初始化连接数

private int maxConnection = 50; //最大连接数

private long timeoutValue = 600000;//连接的最大空闲时间

private long waitTime = 30000; //取连接的时候如果没有可用连接最大的等待时间

其次是连接池的工厂类ConnectionFactory,通过该类来将一个连接池对象与一个名称对应起来,使用者通过该名称就可以获取指定的连接池对象,具体代码如下:

/**

* 连接池类厂,该类常用来保存多个数据源名称合数据库连接池对应的哈希

* @author liusoft

*/

public class ConnectionFactory

{

//该哈希表用来保存数据源名和连接池对象的关系表

static Hashtable connectionPools = null;

static{

connectionPools = new Hashtable(2,0.75F);

}

/**

* 从连接池工厂中获取指定名称对应的连接池对象

* @param dataSource 连接池对象对应的名称

* @return DataSource 返回名称对应的连接池对象

* @throws NameNotFoundException 无法找到指定的连接池

*/

public static DataSource lookup(String dataSource)

throws NameNotFoundException

{

Object ds = null;

ds = connectionPools.get(dataSource);

if(ds == null || !(ds instanceof DataSource))

throw new NameNotFoundException(dataSource);

return (DataSource)ds;

}


/**

* 将指定的名字和数据库连接配置绑定在一起并初始化数据库连接池

* @param name 对应连接池的名称

* @param param 连接池的配置参数,具体请见类ConnectionParam

* @return DataSource 如果绑定成功后返回连接池对象

* @throws NameAlreadyBoundException 一定名字name已经绑定则抛出该异常

* @throws ClassNotFoundException 无法找到连接池的配置中的驱动程序类

* @throws IllegalAccessException 连接池配置中的驱动程序类有误

* @throws InstantiationException 无法实例化驱动程序类

* @throws SQLException 无法正常连接指定的数据库

*/

public static DataSource bind(String name, ConnectionParam param)

throws NameAlreadyBoundException,ClassNotFoundException,

IllegalAccessException,InstantiationException,SQLException

{

DataSourceImpl source = null;

try{

lookup(name);

throw new NameAlreadyBoundException(name);

}catch(NameNotFoundException e){

source = new DataSourceImpl(param);

source.initConnection();

connectionPools.put(name, source);

}

return source;

}

/**

* 重新绑定数据库连接池

* @param name 对应连接池的名称

* @param param 连接池的配置参数,具体请见类ConnectionParam

* @return DataSource 如果绑定成功后返回连接池对象

* @throws NameAlreadyBoundException 一定名字name已经绑定则抛出该异常

* @throws ClassNotFoundException 无法找到连接池的配置中的驱动程序类

* @throws IllegalAccessException 连接池配置中的驱动程序类有误

* @throws InstantiationException 无法实例化驱动程序类

* @throws SQLException 无法正常连接指定的数据库

*/

public static DataSource rebind(String name, ConnectionParam param)

throws NameAlreadyBoundException,ClassNotFoundException,

IllegalAccessException,InstantiationException,SQLException

{

try{

unbind(name);

}catch(Exception e){}

return bind(name, param);

}

/**

* 删除一个数据库连接池对象

* @param name

* @throws NameNotFoundException

*/

public static void unbind(String name) throws NameNotFoundException

{

DataSource dataSource = lookup(name);

if(dataSource instanceof DataSourceImpl){

DataSourceImpl dsi = (DataSourceImpl)dataSource;

try{

dsi.stop();

dsi.close();

}catch(Exception e){

}finally{

dsi = null;

}

}

connectionPools.remove(name);

}


}

首页 上一页 [1] [2] [3] [4] 下一页 尾页
上一篇:JavaMai安装和配置的常见问题   下一篇:新手入门的几大要点
收藏此页】【打印】【关闭
 相关文章  我要点评
·Javascript"篱式"条件判断
·解决Oracle数据库返回cursor问题
·Oracle数据库中sys和system两个用户的区别
·解决无法打开用户默认数据库的方法
·修改Sybase数据库sa密码的方法
·Oracle数据库SQLPLUS中几个常用set语句
·Oracle数据库冷备份恢复的具体步骤
·在SQL Server数据库中导入导出数据

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】