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.Drivervalue>
property>
<property name="driverUrl">
<value>jdbc:mysql://host:3306/dbname?user=root&password=passvalue>
property>
<property name="user">
<value>rootvalue>
property>
<property name="password"> <value>passvalue>
property>
<property name="alias">
<value>mysqlvalue>
property>
<property name="prototypeCount">
<value>5value>
property>
<property name="maximumConnectionCount">
<value>100value>
property>
<property name="minimumConnectionCount">
<value>2value>
property>
<property name="houseKeepingTestSql">
<value>SELECT CURRENT_DATEvalue>
property>
<property name="testBeforeUse">
<value>truevalue>
property>
<property name="testAfterUse">
<value>truevalue>
property>
<property name="trace">
<value>truevalue>
property>
bean>
在上面的代码中,
<property name="testBeforeUse">
<value>truevalue>
property>
用来指定在使用连接之前要进行测试。
<property name="houseKeepingTestSql">
<value>SELECT CURRENT_DATEvalue>
property>
用来指定测试连接所使用的SQL语句。
如果测试发现连接已经close,那么将自动重建连接。
然后从下载proxool的ZIP包。本地解压之后,拷贝proxool-version.jar和proxool-cglib.jar到/WEB-INF/lib下即可。
阅读(2377) | 评论(0) | 转发(0) |