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

本文介绍如何使用Proxool连接池解决Spring+Hibernate框架中MySQL长时间闲置后自动关闭连接的问题。通过配置测试SQL及启用连接测试,确保连接可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,那么将自动重建连接。

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

摘自:http://electiger.blog.51cto.com/112940/119042
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值