MySQL 8小时问题

在MySQL数据库中,默认情况下,如果一个连接的空闲事件超过 8 小时,将会在数据库端关闭这个连接,而数据源并不知道这个连接已经被数据库关闭,当将这个无用的连接交给Dao时,就会产生异常

 

在Spring中,如果采用DBCP配置数据源

如果采用的是DBCP的默认配置,不会产生 8 小时问题, 因为每次数据源在将连接给Dao前都会做检查,但这样影响效率

一种更好的方法是:

    <bean id="mysql_dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
          p:driverClassName="${driverClassName}"
          p:url="${url}"
          p:username="${username_mysql}"
          p:password="${password}"
            p:testOnBorrow="false"
            p:testWhileIdle="true"
            p:timeBetweenEvictionRunsMillis="27000000"
            p:validationQuery="select 1"/>
p:timeBetweenEvictionRunsMillis  以毫秒为单位,时间小于 8 小时,但是这个8小时也是可以在MySQL中通过 interactive-timeout参数进行配置的,所以在配置 p:timeBetweenEvictionRunsMillis,之前先需要知道 interactive-timeout 设置的值
posted @ 2015-07-05 22:55  csnmd  阅读(1024)  评论(0编辑  收藏  举报