DBUtils_jiaDingBus.java 3 KB
package com.bsth.util.db;

import com.mchange.v2.c3p0.DataSources;
import org.apache.log4j.Logger;

import javax.sql.DataSource;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * 嘉定基础库库连接池
 * @author
 *
 */
//@Component
public class DBUtils_jiaDingBus {

	private static String url = null;

	private static String username = null;

	private static String pwd = null;

	private static DataSource ds_pooled;

	static Logger logger = Logger.getLogger(DBUtils_jiaDingBus.class);
	
	static {
		Properties env = new Properties();

		try {
			env.load(DBUtils_jiaDingBus.class.getClassLoader().getResourceAsStream("jiaDingBus-jdbc.properties"));
			// 1. 加载驱动类
			Class.forName(env.getProperty("jiaDingBus.mysql.driver"));

			url = env.getProperty("jiaDingBus.mysql.url");
			username = env.getProperty("jiaDingBus.mysql.username");
			pwd = env.getProperty("jiaDingBus.mysql.password");

			// 设置连接数据库的配置信息
			DataSource ds_unpooled = DataSources.unpooledDataSource(url,
					username, pwd);

			Map<String, Object> pool_conf = new HashMap<String, Object>();
			// 设置最大连接数
			pool_conf.put("maxPoolSize", 10);
			
			pool_conf.put("testConnectionOnCheckout", false);
			//异步检测连接的有效性
			pool_conf.put("testConnectionOnCheckin", true);
			//30秒检测一次
			pool_conf.put("idleConnectionTestPeriod", 30);
			ds_pooled = DataSources.pooledDataSource(ds_unpooled, pool_conf);
		} catch (FileNotFoundException e) {
			logger.error(e.toString());
			e.printStackTrace();
		} catch (IOException e) {
			logger.error(e.toString());
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			logger.error(e.toString());
			e.printStackTrace();
		} catch (SQLException e) {
			logger.error(e.toString());
			e.printStackTrace();
		}
	}

	/**
	 * 获取连接对象
	 */
	public static Connection getConnection() throws SQLException {
		return ds_pooled.getConnection();
	}

	/**
	 * 释放连接池资源
	 */
	public static void clearup() {
		if (ds_pooled != null) {
			try {
				DataSources.destroy(ds_pooled);
			} catch (SQLException e) {
				logger.error(e.toString());
				e.printStackTrace();
			}
		}
	}

	/**
	 * 资源关闭
	 * 
	 * @param rs
	 * @param stmt
	 * @param conn
	 */
	public static void close(ResultSet rs, Statement stmt, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				logger.error(e.toString());
				e.printStackTrace();
			}
		}

		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				logger.error(e.toString());
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				logger.error(e.toString());
				e.printStackTrace();
			}
		}
	}

	public static DataSource getDataSource(){
		return ds_pooled;
	}
}