DBCP JAVA 连接池
2015-11-30 13:18
330 查看
package com.sinoglobal.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Locale;
import java.util.ResourceBundle;
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;
@SuppressWarnings("unchecked")
public class PoolManager {
private static String driver = "net.sourceforge.jtds.jdbc.Driver"; // 驱动
private static String url = ""; // URL
private static String name = "sa"; // 用户名
private static String password = ""; // 密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null;
private static String poolname = "";
private static ResourceBundle rb;
/**
* 初始化数据源
*/
private static synchronized void initDataSource() {
if (driverClass == null) {
try {
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
/**
* 装配配置文件 initProperties
*/
private static void loadProperties() {
rb = ResourceBundle.getBundle("config", Locale.getDefault());
driver = rb.getString("jdbc.sql.driverClassName");
url = rb.getString("jdbc.sql.url");
name = rb.getString("jdbc.sql.username");
password = rb.getString("jdbc.sql.password");
poolname = rb.getString("jdbc.sql.poolname");
}
/**
* 连接池启动
*
* @throws Exception
*/
public static void StartPool() {
loadProperties();
initDataSource();
if (connectionPool != null) {
ShutdownPool();
}
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
url, name, password);
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(poolname, connectionPool);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 释放连接池
*/
public static void ShutdownPool() {
try {
PoolingDriver driver = (PoolingDriver) DriverManager
.getDriver("jdbc:apache:commons:dbcp:");
driver.closePool(poolname);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 取得连接池中的连接
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;
if (connectionPool == null)
StartPool();
try {
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"
+ poolname);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取连接 getConnection
*
* @param name
* @return
*/
public static Connection getConnection(String name) {
return getConnection();
}
/**
* 释放连接 freeConnection
*
* @param conn
*/
public static void freeConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接 freeConnection
*
* @param name
* @param con
*/
public static void freeConnection(String name, Connection con) {
freeConnection(con);
}
/**
* 例子 main
*
* @param args
*/
public static void main(String[] args) {
try {
Connection conn = PoolManager.getConnection();
System.out.println(conn.isClosed());
if (conn != null) {
Statement statement = conn.createStatement();
ResultSet rs = statement
.executeQuery("select * from test2..log");
int c = rs.getMetaData().getColumnCount();
while (rs.next()) {
System.out.println();
for (int i = 1; i <= c; i++) {
System.out.print(rs.getObject(i));
}
}
rs.close();
}
PoolManager.freeConnection(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Locale;
import java.util.ResourceBundle;
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;
@SuppressWarnings("unchecked")
public class PoolManager {
private static String driver = "net.sourceforge.jtds.jdbc.Driver"; // 驱动
private static String url = ""; // URL
private static String name = "sa"; // 用户名
private static String password = ""; // 密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null;
private static String poolname = "";
private static ResourceBundle rb;
/**
* 初始化数据源
*/
private static synchronized void initDataSource() {
if (driverClass == null) {
try {
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
/**
* 装配配置文件 initProperties
*/
private static void loadProperties() {
rb = ResourceBundle.getBundle("config", Locale.getDefault());
driver = rb.getString("jdbc.sql.driverClassName");
url = rb.getString("jdbc.sql.url");
name = rb.getString("jdbc.sql.username");
password = rb.getString("jdbc.sql.password");
poolname = rb.getString("jdbc.sql.poolname");
}
/**
* 连接池启动
*
* @throws Exception
*/
public static void StartPool() {
loadProperties();
initDataSource();
if (connectionPool != null) {
ShutdownPool();
}
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
url, name, password);
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(poolname, connectionPool);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 释放连接池
*/
public static void ShutdownPool() {
try {
PoolingDriver driver = (PoolingDriver) DriverManager
.getDriver("jdbc:apache:commons:dbcp:");
driver.closePool(poolname);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 取得连接池中的连接
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;
if (connectionPool == null)
StartPool();
try {
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"
+ poolname);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取连接 getConnection
*
* @param name
* @return
*/
public static Connection getConnection(String name) {
return getConnection();
}
/**
* 释放连接 freeConnection
*
* @param conn
*/
public static void freeConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接 freeConnection
*
* @param name
* @param con
*/
public static void freeConnection(String name, Connection con) {
freeConnection(con);
}
/**
* 例子 main
*
* @param args
*/
public static void main(String[] args) {
try {
Connection conn = PoolManager.getConnection();
System.out.println(conn.isClosed());
if (conn != null) {
Statement statement = conn.createStatement();
ResultSet rs = statement
.executeQuery("select * from test2..log");
int c = rs.getMetaData().getColumnCount();
while (rs.next()) {
System.out.println();
for (int i = 1; i <= c; i++) {
System.out.print(rs.getObject(i));
}
}
rs.close();
}
PoolManager.freeConnection(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
相关文章推荐
- Java 8 vs. Scala(一): Lambda表达式
- Java 8 vs. Scala(一): Lambda表达式
- java中几种常用的设计模式
- java之字符串
- JAVA正则表达式语法大全
- Java Servlet完全教程
- Spring XML配置--使用注解装配(@Atutowired、@Inject、@Resource)
- 在eclipse中,将java工程转换成web工程
- myeclipse中安装pydev插件
- JDK6和JDK5的区别
- java 泛型在类,接口和方法上的应用
- java内存空间详解
- java内存管理机制
- JAVA基础(2)
- Spring的事务管理
- java中创建BitSet数组
- Eclipse 一直提示 loading descriptor for 的解决方法
- Spring MVC事务配置
- 使用Spring Session做分布式会话管理
- RxJava基本流程和lift源码分析