解决MySQL8小时自动断开连接的问题

    mysql在启动后,如果一段时间内没有活动,那么将自动关闭该连接。这段时间,默认为8小时。在spring+hibernate中解决该问题,应该使用proxool这个连接池来代替DBCP的连接池。因为DBCP连接池没有自动重连功能。

修改applicationContext.xml:
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
         <property name="driver">
             <value>com.mysql.jdbc.Driver</value>
         </property>
         <property name="driverUrl">
             <value>jdbc:mysql://host:3306/dbname?user=root&password=pass</value>
         </property>
         <property name="user">
             <value>root</value>
         </property>
         <property name="password">             
             <value>pass</value>
         </property>
         <property name="alias">
             <value>mysql</value>
         </property>
         <property name="prototypeCount">
             <value>5</value>
         </property>
         <property name="maximumConnectionCount">
             <value>100</value>
         </property>
         <property name="minimumConnectionCount">
             <value>2</value>
         </property> 
         <property name="houseKeepingTestSql"> 
             <value>SELECT 1</value> 
          </property>            
         <property name="testBeforeUse">
             <value>true</value>
         </property>
         <property name="testAfterUse">
             <value>true</value>
         </property>
         <property name="trace">
             <value>true</value>
         </property>
    </bean> 


在上面的代码中,
<property name="testBeforeUse">
     <value>true</value>
</property>

用来指定在使用连接之前要进行测试。

<property name="houseKeepingTestSql">
    <value>SELECT 1</value>
</property>

用来指定测试连接所使用的SQL语句。
如果测试发现连接已经close,那么将自动重建连接。

然后从 http://proxool.sourceforge.net/download.html下载proxool的ZIP包。本地解压之后,拷贝proxool.jar和proxool-cglib.jar到/WEB-INF/lib下即可。

摘自:http://electiger.blog.51cto.com/112940/119042

你可能感兴趣的:(java,spring,mysql,Hibernate,jdbc)