您的位置:首页 > 其它

ThreadLocal实现线程单实例

2013-03-31 23:05 357 查看
package com.zjlolife.drp.util;

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

public class ConnectionManager {

//ThreadLocal通常是在类中的static字段见API
public static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();

public static Connection getConnection() {
Connection conn = threadLocal.get();
if(conn==null) {
try {
JdbcInfo info = ConfigReader.getInstance().getInfo();
Class.forName(info.getDriverName());
conn = DriverManager.getConnection(info.getUrl(), info.getUsername(), info.getPassword());
threadLocal.set(conn);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return conn;
}

public static void setAutoCommit(Connection conn,boolean b) {

try {
conn.setAutoCommit(b);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}

}
}

加载XML文件的类ConfigReader:

package com.zjlolife.drp.util;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ConfigReader {
private Document doc;

private JdbcInfo info;

private static String itemDao;

public static ConfigReader instance = new ConfigReader();

private ConfigReader() {
try {
doc = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"));
Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
Element urlElt = (Element)doc.selectObject("/config/db-info/url");
Element usernameElt = (Element)doc.selectObject("/config/db-info/username");
Element passwordElt = (Element)doc.selectObject("/config/db-info/password");
info = new JdbcInfo();
info.setDriverName(driverNameElt.getStringValue());
info.setUrl(urlElt.getStringValue());
info.setUsername(usernameElt.getStringValue());
info.setPassword(passwordElt.getStringValue());

Element itemDaoElt = (Element) doc.selectObject("/config/item-dao");
itemDao = itemDaoElt.getStringValue();

} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static ConfigReader getInstance() {
return instance;
}

public JdbcInfo getInfo() {
return info;
}

public static String getItemDao() {
return itemDao;
}

public void setItemDao(String itemDao) {
this.itemDao = itemDao;
}
public static void main(String[] args) {
JdbcInfo info = ConfigReader.getInstance().getInfo();
System.out.println(info);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐