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 CURRENT_DATE </ 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 ="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 CURRENT_DATE </ 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 >
< value >true </ value >
</ property >
用来指定在使用连接之前要进行测试。
<
property
name
="houseKeepingTestSql"
>
< value >SELECT CURRENT_DATE </ value >
</ property >
< value >SELECT CURRENT_DATE </ value >
</ property >
用来指定测试连接所使用的SQL语句。
如果测试发现连接已经close,那么将自动重建连接。
然后从
[url]http://proxool.sourceforge.net/download.html[/url]下载proxool的ZIP包。本地解压之后,拷贝proxool-version.jar和proxool-cglib.jar到/WEB-INF/lib下即可。
转载于:https://blog.51cto.com/electiger/119042