如何与Spring引导,Hibernate和Websphere Application Server保持连接

时间:2017-09-04 03:56:34

标签: spring hibernate spring-boot websphere websphere-liberty

我的应用程序使用下面的框架和应用程序服务器:

  1. 带有休眠的Spring Boot(1.5.4.RELEASE)。

  2. Bluemix上的Websphere Application Server Liberty for Java

  3. 该应用程序正常运行几小时后连接超时。请参阅以下例外:

    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。

    我的问题是我应该如何配置以保持连接存活(或续订)?

    提前谢谢!

1 个答案:

答案 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