六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

一種完成數(shù)據(jù)庫(kù)連接池的方法(2)

[摘要]其次是連接池的工廠類ConnectionFactory,通過該類來將一個(gè)連接池對(duì)象與一個(gè)名稱對(duì)應(yīng)起來,使用者通過該名稱就可以獲取指定的連接池對(duì)象,具體代碼如下:/** * 連接池類廠,該類常用來保存...
其次是連接池的工廠類ConnectionFactory,通過該類來將一個(gè)連接池對(duì)象與一個(gè)名稱對(duì)應(yīng)起來,使用者通過該名稱就可以獲取指定的連接池對(duì)象,具體代碼如下:


/**
* 連接池類廠,該類常用來保存多個(gè)數(shù)據(jù)源名稱合數(shù)據(jù)庫(kù)連接池對(duì)應(yīng)的哈希
* @author liusoft
*/
public class ConnectionFactory
{
//該哈希表用來保存數(shù)據(jù)源名和連接池對(duì)象的關(guān)系表
static Hashtable connectionPools = null;
static{
connectionPools = new Hashtable(2,0.75F);
}
/**
 * 從連接池工廠中獲取指定名稱對(duì)應(yīng)的連接池對(duì)象
 * @param dataSource連接池對(duì)象對(duì)應(yīng)的名稱
 * @return DataSource返回名稱對(duì)應(yīng)的連接池對(duì)象
 * @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;
}

/**
 * 將指定的名字和數(shù)據(jù)庫(kù)連接配置綁定在一起并初始化數(shù)據(jù)庫(kù)連接池
 * @param name對(duì)應(yīng)連接池的名稱
 * @param param連接池的配置參數(shù),具體請(qǐng)見類ConnectionParam
 * @return DataSource如果綁定成功后返回連接池對(duì)象
 * @throws NameAlreadyBoundException一定名字name已經(jīng)綁定則拋出該異常
 * @throws ClassNotFoundException無法找到連接池的配置中的驅(qū)動(dòng)程序類
 * @throws IllegalAccessException連接池配置中的驅(qū)動(dòng)程序類有誤
 * @throws InstantiationException無法實(shí)例化驅(qū)動(dòng)程序類
 * @throws SQLException無法正常連接指定的數(shù)據(jù)庫(kù)
 */
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;
}
/**
 * 重新綁定數(shù)據(jù)庫(kù)連接池
 * @param name對(duì)應(yīng)連接池的名稱
 * @param param連接池的配置參數(shù),具體請(qǐng)見類ConnectionParam
 * @return DataSource如果綁定成功后返回連接池對(duì)象
 * @throws NameAlreadyBoundException一定名字name已經(jīng)綁定則拋出該異常
 * @throws ClassNotFoundException無法找到連接池的配置中的驅(qū)動(dòng)程序類
 * @throws IllegalAccessException連接池配置中的驅(qū)動(dòng)程序類有誤
 * @throws InstantiationException無法實(shí)例化驅(qū)動(dòng)程序類
 * @throws SQLException無法正常連接指定的數(shù)據(jù)庫(kù)
 */
public static DataSource rebind(String name, ConnectionParam param)
throws NameAlreadyBoundException,ClassNotFoundException,
IllegalAccessException,InstantiationException,SQLException
{
try{
unbind(name);
}catch(Exception e){}
return bind(name, param);
}
/**
 * 刪除一個(gè)數(shù)據(jù)庫(kù)連接池對(duì)象
 * @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);
}

}




ConnectionFactory主要提供了用戶將將連接池綁定到一個(gè)具體的名稱上以及取消綁定的操作。使用者只需要關(guān)心這兩個(gè)類即可使用數(shù)據(jù)庫(kù)連接池的功能。下面我們給出一段如何使用連接池的代碼:


String name = "pool";
String driver = " sun.jdbc.odbc.JdbcOdbcDriver ";
String url = "jdbc:odbc:datasource";
ConnectionParam param = new ConnectionParam(driver,url,null,null);
param.setMinConnection(1);
param.setMaxConnection(5);
param.setTimeoutValue(20000);
ConnectionFactory.bind(name, param);
System.out.println("bind datasource ok.");
//以上代碼是用來登記一個(gè)連接池對(duì)象,該操作可以在程序初始化只做一次即可
//以下開始就是使用者真正需要寫的代碼
DataSource ds = ConnectionFactory.lookup(name);
try{
for(int i=0;i<10;i++){
Connection conn = ds.getConnection();
try{
testSQL(conn, sql);
}finally{
try{
conn.close();
}catch(Exception e){}
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
ConnectionFactory.unbind(name);
System.out.println("unbind datasource ok.");
System.exit(0);
}




從使用者的示例代碼就可以看出,我們已經(jīng)解決了常規(guī)連接池產(chǎn)生的兩個(gè)問題。但是我們最最關(guān)心的是如何解決接管close方法的辦法。接管工作主要在ConnectionFactory中的兩句代碼:


source = new DataSourceImpl(param);
source.initConnection();


主站蜘蛛池模板: 亚洲欧洲高清 | 青草影院在线观看免费版 | 欧洲性xxxx免费视频下载软件 | 一区二区精品 | 欧美一区网站 | 日本免费色网站 | 亚洲第一页在线视频 | 在线看欧美成人中文字幕视频 | 亚洲精品视频在线观看免费 | 伊人网在线免费观看 | 香蕉久人久人青草青草 | 午夜影院免费视频 | 色噜噜噜噜噜在线观看网站 | 在线看视频的网站入口 | 日本xxxwww色视频 | 日韩黄色大片免费看 | 五月婷婷激情网 | 午夜影院美女 | 四虎影永久在线高清免费 | 色综合五月婷婷 | 欧美午夜影院 | 四虎影视国产精品永久在线 | 日韩成人免费视频 | 亚洲v日韩v欧美在线观看 | 天美传媒麻豆自制剧 | 四虎福利视频 | 日韩欧美亚洲综合一区二区 | 午夜久久久精品 | 午夜无遮挡怕怕怕免费视频 | 欧美在线免费观看视频 | 日韩一级视频免费观看 | 亚洲九九色 | 性xxxxx| 午夜观看 | 色噜噜视频在线观看 | 日本美女久久 | 日韩一级片在线免费观看 | 天堂亚洲网 | 天天干天天操天天干 | 手机看片91 | 色综合久久中文字幕网 |