我的应用程序使用下面的框架和应用程序服务器:
带有休眠的Spring Boot(1.5.4.RELEASE)。
Bluemix上的Websphere Application Server Liberty for Java
该应用程序正常运行几小时后连接超时。请参阅以下例外:
2017-09-01T11:40:40.57+0900 [APP/PROC/WEB/0] OUT 2017-09-01 02:40:40,563 [http-nio-8080-exec-2] [5baba2cb-5bfd-4846-b8e0-8782aa729639] [] WARN o.h.e.jdbc.spi.SqlExceptionHelper [SqlExceptionHelper.java:127] - SQL Error: -4499, SQLState: 08001
2017-09-01T11:40:40.58+0900 [APP/PROC/WEB/0] OUT or socket output stream. Error location: Reply.fill() - socketInputStream.read (-1). Message: Connection timed out (Write failed). ERRORCODE=-4499, SQLSTATE=08001
我知道Spring boot需要在application.properties中设置配置属性。
spring.datasource.testOnBorrow=true
spring.datasource.testWhileIdle=true
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.numTestsPerEvictionRun=3
spring.datasource.minEvictableIdleTimeMillis=600000
spring.datasource.validationQuery=SELECT 1
但是,我发现Spring boot 1.3+,我们必须使用各自的前缀(spring.datasource.tomcat。,spring.datasource.hikari。和spring)来使用特定于实现的设置。 .datasource.dbcp2。*)和(显然)不支持Websphere Application Server Liberty Profile。
我的问题是我应该如何配置以保持连接存活(或续订)?
提前谢谢!
答案 0 :(得分:0)
您使用的数据源是什么?在我们的例子中,我们使用的是tomcat,这是默认选项。所以我们有
# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.test-while-idle=true
spring.datasource.tomcat.time-between-eviction-runs-millis=300000
spring.datasource.tomcat.validation-query=SELECT 1