如题:自己配置了c3p0,项目结构如下:C3p0.properties中配置了数据库和c3p0的链接数据;具体如下:链接可以被创建但是后期使用过程中总是报too many connection;
想请教各位大神,这是什么原因,是我的配置的原因还是我关闭链接的方式不正确
关闭方式如下:使用方式如下:
想请教各位大神,这是什么原因,是我的配置的原因还是我关闭链接的方式不正确
关闭方式如下:使用方式如下:
package com.cn.piaoju.db.util;
/**
* 初始化c3p0
*/
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;import javax.sql.DataSource;import com.mchange.v2.c3p0.DataSources;public class C3P0ConnentionProvider {
private static final String JDBC_DRIVER = "driverClass";
private static final String JDBC_URL = "jdbcUrl";
private static DataSource ds;
/**
* 初始化连接池代码块
*/
static {
initDBSource();
}
/**
* 初始化c3p0连接池
*/
private static final void initDBSource() {
Properties c3p0Pro = new Properties();
try {
// 加载配置文件
String path = C3P0ConnentionProvider.class.getResource("/")
.getPath();
String websiteURL = (path.replace("/build/classes", "")
.replace("%20", " ").replace("classes/", "") + "c3p0.properties")
.replaceFirst("/", "");
FileInputStream in = new FileInputStream(websiteURL);
c3p0Pro.load(in);
} catch (Exception e) {
e.printStackTrace();
} String drverClass = c3p0Pro.getProperty(JDBC_DRIVER);
if (drverClass != null) {
try {
// 加载驱动类
Class.forName(drverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} } Properties jdbcpropes = new Properties();
Properties c3propes = new Properties();
for (Object key : c3p0Pro.keySet()) {
String skey = (String) key;
if (skey.startsWith("c3p0.")) {
c3propes.put(skey, c3p0Pro.getProperty(skey));
} else {
jdbcpropes.put(skey, c3p0Pro.getProperty(skey));
}
} try {
// 建立连接池
DataSource unPooled = DataSources.unpooledDataSource(
c3p0Pro.getProperty(JDBC_URL), jdbcpropes);
ds = DataSources.pooledDataSource(unPooled, c3propes); } catch (SQLException e) {
e.printStackTrace();
}
} /**
* 获取数据库连接对象
*
* @return 数据连接对象
* @throws SQLException
*/
public static synchronized Connection getConnection() throws SQLException {
final Connection conn = ds.getConnection();
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
return conn;
}
}
private dbUtil() {
}
private static final dbUtil db = new dbUtil();
// 静态工厂方法
public static dbUtil getdb() {
return db;
}