我正在apache tomcat服务器上运行程序,该程序应该是永久性的,但每天早上(客户端部分在晚上无法访问)我收到MySQL服务器关闭的错误消息(在apache tomcat控制台中)。那有什么方法可以防止这种情况发生吗? 提前谢谢!
答案 0 :(得分:10)
是的,我遇到了同样的问题。尝试将validationQuery添加到DataSource。
以下是我如何定义我的:
<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="..."/>
答案 1 :(得分:9)
mysql服务器在一段时间后超时连接,默认情况下为28800秒,这可能是你要达到的超时时间。
您可以通过将autoreconnect=true参数添加到jdbc网址来指示mysql驱动程序在连接丢失的情况下重新连接,例如: jdbc:mysql://localhost/mydb?autoreconnect=true
答案 2 :(得分:1)
我认为您直接在网络应用代码中打开了连接。 您可以尝试使用超时来引入connection pool,应该重新建立连接。
如果这没有帮助,请询问网络管理员他是否有状态过滤器检测超时(当您的客户端空闲时)并关闭连接。
如果您正在使用数据库池,例如c3p0或dbcp,请查看其文档,应该有一些设置来配置空闲超时或定期检查连接(这将保持连接打开,而不是暂停它服务器端)