日期:2014-05-18  浏览次数:20727 次

大家帮我看一下这个链接问什么取不到了?连接池的问题

用的是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();