大家帮我看一下这个链接问什么取不到了?连接池的问题
用的是C3P0连接池(初学者,有点打击了...)
下面是我测试的代码,最大链接是20,带我在同一个jsp页面中重复刷新到第21次的时候,这个链接就取不到了,页面一直处于加载状态,只有重启服务才能进行其他操作,还有请教大家的是,我这样获取链接和释放链接的方法对么?
这个代码是不是存在很多问题,还请各位指教,最好有实例代码参考一下,共同进步
谢谢大家!
-------------------------
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import
java.sql.SQLException;
import java.util.List;
import javax.naming.InitialContext;
import
javax.naming.NamingException;
import javax.sql.DataSource;
import
org.apache.log4j.Logger;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBPoolManager {
public static DBPoolManager dbm = null;
// LOG4J的日志记录,推荐使用,主要调试错误信息,重要的日志记录
private static Logger log = Logger.getLogger(DBPoolManager.class);
private Connection conn = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
private static InitialContext ctx = null;
private ComboPooledDataSource cpds = null;
/**
* 创建该类时初始化
*
*/
public DBPoolManager(){
getDataSource();
}
/**
* 获取数据库操作实例
* @return
*/
public static DBPoolManager getInstance(){
if(dbm == null)
dbm = new DBPoolManager();
return dbm;
}
/**
* 创建静态方法,实现JDBC定义的连接池接口
* @throws
SQLException * @throws
ClassNotFoundException */
public void getDataSource() {
cpds = new ComboPooledDataSource();
try {
cpds.setDriverClass( "com.mysql.jdbc.Driver " ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 " );
cpds.setUser( "root ");
cpds.setPassword( "test ");
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
// 记录日志信息,说明已经成功建立连接池
log.info( " init c3p0 datasource ...22... ");
}
/**
* 获得连接
* @return
* @throws SQLException
*/
public Connection getConnection() throws SQLException{
if(cpds == null)
getDataSource();