我在apache tomcat服务器上运行程序,它应该是永久打开的,但是每天早上(客户端部分在晚上是不可访问的)我收到错误消息(在apache tomcat控制台中),MySQL服务器关闭。那么,有什么方法可以防止这种情况发生吗?提前感谢!
发布于 2010-04-11 04:34:31
是的,我也遇到过同样的问题。尝试向您的DataSource添加validationQuery。
下面是我如何定义我的:
<Resource auth="Container"
type="javax.sql.DataSource"
name="jdbc/gporder"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/mydb"
maxActive="10"
maxIdle="5"
validationQuery="SELECT 1"
testOnBorrow="true"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="10000"
minEvictableIdleTimeMillis="60000"
username="..." password="..."/>发布于 2010-04-08 03:29:43
mysql服务器会在一段时间后连接超时,默认情况下是28800秒,很可能就是您遇到的这个超时。
您可以通过向jdbc url添加autoreconnect=true参数(例如jdbc:mysql://localhost/mydb?autoreconnect=true )来指示mysql驱动程序在连接丢失的情况下重新连接。
发布于 2010-04-08 02:51:48
我想你可以直接在你的web应用代码中打开连接。您可以尝试引入一个使用超时的connection pool,应该重新建立连接。
如果这不起作用,请询问网络管理员他是否有状态过滤器来检测超时(当您的客户端空闲时)并关闭连接。
如果您正在使用数据库池,如c3p0或dbcp,请查看其文档,其中应该有配置空闲超时或定期检查连接的设置(这将使连接保持打开,而不会在服务器端超时)
https://stackoverflow.com/questions/2594583
复制相似问题