想通过JDBC来配置c3p0数据库连接池,上网想找到解析工具没有找到,只要自己写了一个,可以读取在根目录下的
c3p0配置文档,再根据配置信息来反射ComboPooledDataSource ,中的setter,进行连接池的配置。
本人水平很菜,如果有什么不足请大家指出。
package cn.vagasnail.sgms.util;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* 得到c3p0的数据库连接池
*
* @author vagasnail
*
* 2009-3-26 下午07:54:10
*/
public class C3p0ConnectionFactory {
private C3p0ConnectionFactory() {
}
private static ComboPooledDataSource ds = null;
static {
Map<String, String> configs = C3p0XMLParser
.parserXML("c3p0-config.xml"); // 得到一个map包含配置信息
ds = new ComboPooledDataSource(); // 得到一个数据库连接池数据源
Method[] fs = ComboPooledDataSource.class.getMethods(); // 得到该数据库连接池数据源的所以方法信息
Pattern pattern = Pattern.compile("get([A-Z]\\w+)()");
for (Method m : fs) {
Matcher matcher = pattern.matcher(m.getName());
String str = "";
String strLow = "";
if (matcher.find()) {
str = matcher.group(1);
char c = str.charAt(0);
strLow = Character.toLowerCase(c) + str.substring(1);
}
try {
String value = configs.get(strLow);
int intValue = 0;
Method setMod = null;
if (value != null && !"".equals(value)){
try{
intValue = Integer.parseInt(value);
setMod = ComboPooledDataSource.class.getMethod("set"
+ str, int.class); //如果反射的方法中是int类型,而不是包装类Interger,那么无法反射到该犯法,反射调用方法无法自动解包
if(setMod != null)
setMod.invoke(ds, intValue);
}catch(NumberFormatException nfe){
setMod = ComboPooledDataSource.class.getMethod("set"
+ str, String.class);
if(setMod != null)
setMod.invoke(ds, value);
}
}else
continue;
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
// e.printStackTrace(); //如果方法不存在则继续下面的循环
continue;
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
login(configs);
}
private static void login(Map<String, String> configs){
ds.setUser(configs.get("user"));
ds.setPassword(configs.get("password"));
}
/**
* 得到一个数据库连接
*
* @return 数据库连接
*/
public static synchronized Connection getConnection() {
Connection con = null;
try {
con = ds.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
return con;
}
/**
* 关闭数据库(并没有真正的关闭,连接池把连接存储起来下一次调用的时候还可以使用)
* @param conn
* @throws SQLException
*//*
public static synchronized void close(Connection conn) {
if (conn != null) {
try {
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
return;
}
}
}*/
public static int getCurrentConns() throws SQLException{
return ds.getNumConnectionsAllUsers();
}
}
分享到:
相关推荐
java中c3p0数据库连接池使用方法(c3p0-config.xml+c3p0-0.9.2-pre1.jar+JdbcPool_c3p0.java),里面包含了c3p0-0.9.2-pre1.jar、以及配置文件:c3p0-config.xml、以及一个c3p0数据库连接池工具类(只有简单的两个方法...
c3p0是一种开源JDBC数据库连接池技术,该jar包包含了连接池技术必须导入项目的c3p0-0.9.5.5.jar和mchange-commons-java-0.2.19.jar两个jar包,还有连接池配置需要的c3p0-config.xml配置文件,名字不能修改,不然无法...
C3P0数据库链接的jar包,并且包含xml格式的数据库配置
数据库连接池jar包,包含c3p0、druidjar包和依赖jar包,c3p0通过配置文件xml或者properties读取连接对象 druid通过properties读取连接,使用springJDBC JdbcTempalte简化sql操作
内含jar文件,附加上了配置信息,有重要单词,供java开发者使用
C3P0:数据库连接池技术 步骤: 1.导入jar包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar 2.定义配置文件 名称:c3p0.properties 或者 c3p0-config.xml 路径:直接将文件放在src目录下即可 3.创建数据库连接池...
c3p0-0.9.5.2jar包完整包,包括xml配置样例
c3p0是款强大的数据库连接池 其完整包要到官网下载 第一次使用学习的同学一定很是头大!因为不知道怎么写xml环境配置文件 所以本人稍微做了整理 里面有样板的xml配置文件 注意:1 配置文件名不能乱改(否则c3p0会找不到...
如何使用c3p0数据库连接池jar包: 1.导入两个jar包:c3p0-0.9.5.2.jar、mchange-commons-java-0.2.12.jar 2.定义配置文件(可直接放在src文件夹下):c3p0.properties或c3p0-config.xml 3.创建数据库连接池对象...
C3P0是一个开放源代码的JDBC连接池,Hibernate的发行包中默认使用此连接池。据说性能最好。 C3p0连接池连接数据库教程+JavaDemoo Demo包括两个,一个代码配置方法,一个是XML配置方法
数据库连接池jar包 内置了c3p0-config.xml配置文件 jar包在lib中 c3p0-0.9.5.5.jar c3p0-oracle-thin-extras-0.9.5.5.jar mchange-commons-java-0.2.19.jar
C3P0是一个用于管理JDBC连接池的Java库。...配置C3P0连接池:在应用程序的配置文件中,你需要配置C3P0连接池的参数。这通常包括数据库的连接URL、用户名、密码,以及连接池的一些设置,如最小连接数、最大连接数等。
C3P0是一个开源的JDBC连接池,目前使用它的开源项目有Hibernate,Spring等。 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从...
RESTFUL + SPRINGMVC + C3P0连接池 的完美实现. 传递json数据到springmvc自动转为obj。obj传前台可直接转换为json。 rest配置文件内 修改,可同理兼容 JSON XML AMF 或其他各种。
c3p0 资源包 包含jar包以及c3p0标准xml 用与构建数据库连接池
采用C3P0方式配置数据库连接池,有完整的applicationContext.xml 文件.
这里是java的c3p0池的jar包和xml,仅供学习 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。
SSH整合学习笔记之spring与hibernate整合(二)之c3p0 spring与hibernate整合基于XML方式--c3p0数据库连接池的使用。