文本描述了三种防止连接中止的解决方案:
使用配置连接字符串autoReconnect=true。这是URL连接字符串的属性,该属性在驱动程序级别起作用。您需要在数据源配置中更改连接字符串。
url='jdbc:MysqL://localhost:3306/confluence?autoReconnect=true'
增加超时。这通常是数据库的属性。您可以增加此值以查看是否获得较少的连接中断。
配置连接池以测试连接的有效性。这是在池而不是驱动程序级别上完成的。这将取决于您使用的数据源实现。但是,如果使用池化数据池(例如c3p0),则应该在数据源的属性中对其进行配置。
JDBC的连接池选项:DBCP与C3P0http://snipplr.com/view/14725/c3p0-datasource-config-connectionpool/http://www.mchange.com/projects/c3p0/index.html#configuring_connection_testing附加评论:
数据源/池也可以有一个超时,它对应于空闲连接在池中保留的时间。不要与db超时混淆。有几种方法可以测试连接的有效性。一种常见的方法是拥有虚拟测试表。池将在虚拟测试表上发出选择,以查看连接是否仍然正常。解决方法我从错误消息中读取了以下建议:
您应考虑在应用程序中使用连接之前使连接有效性到期和/或对其进行测试,或者增加服务器为客户端超时配置的值,或者使用Connector / J连接属性“autoReconnect = true”来避免此问题。
我正在使用Spring和JPA。我应该在哪里配置Connector /J?(处于persistence.xml,或处于entityManagerFactory弹簧配置,或处于dateSource弹簧配置或其他位置?)