锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.log4j.Logger;
/**
* @author Administrator
*
*/
public class DBConnectionFactory {
/**
* Logger for this class
*/
private static final Logger logger = Logger
.getLogger(DBConnectionFactory.class);
private static ObjectPool connectionPool=null;
private static String sqlJdbc = "";
private static String sqlUser = "";
private static String sqlPwd = "";
@SuppressWarnings("unchecked")
private static Class driverClass=null;
public static void proDBConnectionFactory(){
if(sqlJdbc.equals("")){
sqlJdbc = "jdbc:jtds:sqlserver://27.0.0.1:1433/finance;tds=8.0;lastupdatecount=true";
}
if(sqlUser.equals("")){
sqlUser = "sa";
}
if(sqlPwd.equals("")){
sqlPwd = "11111";
}
initDataSource();
}
public synchronized static void initDataSource(){
if(driverClass == null){
try {
driverClass = Class.forName("net.sourceforge.jtds.jdbc.Driver");
} catch (ClassNotFoundException e) {
logger.error("鍦ㄦ敞鍐岄┍鍔ㄥ悕縐扮殑鏃墮棿鍙戠敓閿欒錛?+e.getMessage(),e);
}
}
if(connectionPool == null){
setupDriver(sqlJdbc);
//printDriverStats();
}else{
System.out.print("榪炴帴姹犲凡緇忓瓨鍦?);
}
try {
// printDriverStats();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConn(){
proDBConnectionFactory();
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:FinanceDBPool");
} catch(SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void printDriverStats() throws Exception {
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
ObjectPool connectionPool = driver.getConnectionPool("FinanceDBPool");
System.out.println("媧誨姩鐨勮繛鎺? " + connectionPool.getNumActive());
System.out.println("絀洪棽鐨勮繛鎺? " + connectionPool.getNumIdle());
}
public static void setupDriver(String connectURI){
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,sqlUser,sqlPwd);
@SuppressWarnings("unused")
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
//driver.registerPool("FinanceDBPool",connectionPool);
driver.registerPool("FinanceDBPool",connectionPool);
} catch (ClassNotFoundException e) {
logger.error("娉ㄥ唽榪炴帴姹犵殑鏃墮棿鍙戠敓閿欒:"+e.getMessage(),e);
} catch (SQLException e) {
logger.error("娉ㄥ唽榪炴帴姹犵殑鏃墮棿鍙戠敓閿欒:"+e.getMessage(),e);
}
}
鍑虹幇榪欎釜闂錛屾槸鍥犱負浣犳病鏈夋紜厤緗?Hibernate internal session context management .