DBUtils_oldSystem.java 2.68 KB
package com.bsth.util.db;

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

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

/**
 * 老系统数据库连接池(保持少量的连接,不会对老系统有什么影响)
 * @author PanZhao
 *
 */
//@Component
public class DBUtils_oldSystem {

	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_oldSystem.class);
	
	static {

		try {
			// 1. 加载驱动类
			Class.forName("oracle.jdbc.driver.OracleDriver");

			url = "jdbc:oracle:thin:@10.10.200.225:1521:orcl";
			username = "jjwgps";
			pwd = "jjwgps";

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

			Map<String, Object> pool_conf = new HashMap<String, Object>();
			// 设置最大连接数
			pool_conf.put("maxPoolSize", 5);
			
			pool_conf.put("testConnectionOnCheckout", false);
			//异步检测连接的有效性
			pool_conf.put("testConnectionOnCheckin", true);
			//10分钟检测一次
			pool_conf.put("idleConnectionTestPeriod", 60 * 10);
			ds_pooled = DataSources.pooledDataSource(ds_unpooled, pool_conf);
		}  catch (ClassNotFoundException e) {
			logger.error(e.toString());
			e.printStackTrace();
		} catch (SQLException e) {
			logger.error("初始化老系统连接池失败,非正式环境请忽略这个问题!");
			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;
	}
}