关于C3P0超过最大连接数问题
--------------------编程问答-------------------- 是连接池wait状态,为什么你认为会有异常抛出哪?连接池在等待你的其他占用线程释放连接,从逻辑上来说完全正确
不知道你这个测试想要达到什么目的
可以考虑一下,正常执行环境中,connection对象不应该被某个线程一直持有,用完的connection应该被close的,那连接池检测到有空闲连接,才能提供给下一个请求线程处理 --------------------编程问答-------------------- 帮楼主顶起来
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;
public class TestC3P01 {
/**
* @param args
*/
public static void main(String[] args) {
ComboPooledDataSource cpds = new ComboPooledDataSource();
try {
cpds.setDriverClass( "com.mysql.jdbc.Driver" );
} catch (PropertyVetoException e) {
e.printStackTrace();
System.exit(1);
}
cpds.setJdbcUrl( "jdbc:mysql:http//it.sinoest.com" );
cpds.setUser("hb");
cpds.setPassword("123456");
cpds.setMinPoolSize(5);
cpds.setMaxPoolSize(20);
cpds.setInitialPoolSize(10);
cpds.setAcquireRetryAttempts(1);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Connection[] c = new Connection[20];
for(int i = 0; i < 20; i++) {
try {
System.out.println(df.format(new java.util.Date()));
System.out.println("申请第" + i + "个数据库连接");
c[i] = cpds.getConnection();
System.out.println(df.format(new java.util.Date()));
} catch (SQLException e) {
System.out.println(df.format(new java.util.Date()));
e.printStackTrace();
}
}
try {
System.out.println("超过最大连接数后再次申请数据库连接");
Connection con = cpds.getConnection();
System.out.println(df.format(new java.util.Date()));
} catch (Exception e) {
System.out.println(df.format(new java.util.Date()));
e.printStackTrace();
System.exit(1);
}
try {
DataSources.destroy( cpds );
} catch (SQLException e) {
e.printStackTrace();
}
}
} --------------------编程问答-------------------- 在实际项目应用中可能会出现连接池不够的情况,我需要及时捕获这种异常,以便合理调整数据库连接池申请数,否则我不知道自己配置的连接池是否够用。 --------------------编程问答-------------------- 数据库连接是从连接池中取出的,每次用完了就必须要放回去,如果取出来用了就不放回去,会导致连接池的连接消耗殆尽。 打个比方, 连接池在初始化时有10个连接, 如果取出用了就不管了, 那么前10个人可以正常使用, 第十一个人之后就无法使用了, 取出的连接都是null, 后台也会抛出一大堆异常。
补充:Java , Web 开发