在我的 spring-hibernate 应用程序中,我们org.apache.tomcat.jdbc.pool.DataSource
用于连接池。当我们启动服务器时,我们可以看到与数据库的连接已建立,并且在 mysql 服务停止后服务器开始抛出错误,提示连接丢失。当mysql服务再次启动时,我们是否必须重新启动服务器才能重新建立与数据库的连接?因为即使提供了 autoReconnect=true 参数,应用程序也无法建立与数据库的连接。
问问题
999 次
2 回答
1
尝试添加以下参数:
validationQuery="SELECT 1"
testOnBorrow="true"
它是如何工作的:连接池在返回连接之前尝试运行validationQuery。如果validationQuesry 失败,dbcp 会丢弃连接,创建一个新连接并将其返回。
这是一个例子:
<Resource name="jdbc/cooldatabase"
description="Strandls.com license database"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/cooldatabase?autoReconnect=true"
username="cooluser"
password="coolpassword"
initialSize="0"
maxActive="20"
maxIdle="10"
minIdle="0"
maxWait="-1"
validationQuery="SELECT 1"
testOnBorrow="true"
poolPreparedStatements="true"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>
于 2012-10-28T19:31:02.580 回答
0
我尝试使用 dbcp 和 c3p0。我在 dbcp 中发现了某些问题,但 c3p0 工作正常。
autoReconnect=true
现在我的应用程序能够自动重新连接到 MySQL DB。
于 2012-10-14T17:02:04.367 回答