DB link pool


/*
* 创建日期 2010-10-22
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package common.db;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

import java.io.File;
import java.util.Hashtable;
import java.util.List;
import java.util.ArrayList;

public class DBPool
{
static Logger logger = Logger.getLogger(DBPool.class);

// 为了以后支持多数据库,所以也需要多数据库连接池
public static String JNDI_ROOT = "D:\\Tomcat 5.0\\conf\\Catalina\\localhost";

public static String jndiFileName = "hardware.xml";

private static Hashtable<String, DataSource> poolList = new Hashtable<String, DataSource>();

static {
String dbName = "";
String jndiName = "";

ArrayList list = getAllDbName();

try {
InitialContext ctx = new InitialContext();

for (int i = 0; i < list.size(); i++) {

dbName=list.get(i).toString();

jndiName = "java:comp/env/jdbc/" + dbName;
System.out.println("JNDIName:"+jndiName);

DataSource pool = (DataSource) ctx.lookup(jndiName);
if (pool != null) {
poolList.put(dbName, pool);

//System.out.println("数据库联接成功"+pool.toString());
} else {
//System.out.println("数据库联接失败");
}
}
} catch (NamingException ne) {
ne.printStackTrace();
}
}

public static DataSource getPool(String dbName) {
return (DataSource) poolList.get(dbName);
}

public static ArrayList getAllDbName() {
ArrayList<String> list = new ArrayList<String>();

Document doc = null;
try {
SAXBuilder builder = new SAXBuilder();
doc = builder.build(new File(JNDI_ROOT+"\\"+jndiFileName));

// System.out.println("good");
} catch (JDOMException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}

Element root = doc.getRootElement();// 获得根元素element
// System.out.println(root.getAttribute("docBase").getValue());

List resourceList = root.getChildren("Resource");

Element resource;
String resourceName = "";
String dbName = "";

for (int i = 0; i < resourceList.size(); i++) {
resource = (Element) resourceList.get(i);
resourceName = resource.getAttribute("name").getValue();
dbName = resourceName.substring("jdbc/".length(), resourceName
.length());

list.add(dbName);
}

return list;
}

public static void main(String[] args) {
DBPool.getAllDbName();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值