JDBCConnectionException: could not execute query,数据库连接池问题

  1、做了个后台编辑系统,上传到服务器后正常使用,但是第二天却出现了如下的问题,

    

  经过查询资料知道了是数据库连接池的问题。

  按照网上网友的说法,运行一个系统,测试没有问题,然后把本地时间更改到后天,再次运行就报这个错误了!(首先启动tomcat,打开其中的一个系统,比如students, 运行无误,可以登录系统,把系统时间设置为1天后,再次打开, 就出现了上面图片中的错    误,亲自试一下就是这样子滴,别忘了打开tomcat就OK)。

    Hibernate支持如下的连接池:
   DriverManagerConnectionProvider:代表由Hibernate提供的默认的数据库连接池
   C3P0ConnectionProvider:代表C3P0连接池
   ProxoolConnectionProvider:代表Proxool连接池
   DBCPConnectionProvider:代表DBCP连接池
   DatasourceConnectionProvider:代表在受管理环境中由容器提供的数据源

  默认连接池并不支持在分配一个连接时,测试其有效与否的功能,而C3P0、Proxool、DBCP都提供了这样的功能,正好可以解决上述问题,在这里我们使用c3p0来解决。

  在hibernate.cfg.xml文件里面加入如下的配置:

 

  

  <property name="hibernate.connection.provider_class">
    org.hibernate.connection.C3P0ConnectionProvider
  </property>

  <!-- 最大连接数 -->
  <property name="hibernate.c3p0.max_size">20</property>
  <!-- 最小连接数 -->
  <property name="hibernate.c3p0.min_size">5</property>
  <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
  <property name="hibernate.c3p0.timeout">120</property>
  <!-- 最大的PreparedStatement的数量 -->
  <property name="hibernate.c3p0.max_statements">100</property>
  <!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒-->
  <property name="hibernate.c3p0.idle_test_period">120</property>
  <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
  <property name="hibernate.c3p0.acquire_increment">2</property>
  <!-- 每次都验证连接是否可用 -->
  <property name="hibernate.c3p0.validate">true</property>

  <!--每*秒检查所有连接池中的空闲连接。Default: 0 -->
  <property name="c3p0.idleConnectionTestPeriod ">18000</property>
  <!--最大空闲时间,*秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
  <property name="c3p0.maxIdleTime">25000</property>

 

 想看c3p0更详细的说明可以到http://www.blogjava.net/sway/archive/2008/11/05/238860.html去
 
 
 
 
posted @ 2014-04-22 11:58  木幽落_思  阅读(3808)  评论(0编辑  收藏  举报