2017-09-04 64 views
1

我的應用程序使用下面的框架和應用服務器:如何跟上春天開機,休眠和WebSphere Application Server連接

  1. 春季啓動(1.5.4.RELEASE)與休眠。

  2. 的WebSphere Application Server自由的Java上Bluemix

應用程序工作正常,但後小時連接超時運行。請參閱以下例外:

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引導需要在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 

然而,我發現同春啓動1.3+,我們必須用他們各自的前綴(spring.datasource.tomcat。,spring.datasource.hikari。,春季使用的特定實現設置。 datasource.dbcp2。*)和(顯然)不支持Websphere Application Server Liberty Profile。

我的問題是我應該如何配置以保持連接活着(或更新它們)?

預先感謝您!

+0

實現取決於你的數據源而不是你的應用服務器。從您使用'spring.datasource'的事實判斷,我假設您沒有使用'spring.datasource.jndi-name',因此您正在使用其中一個受支持的連接池。如果沒有,'spring.datasource'屬性(除了'jndi-name'之外)幾乎沒有用,因爲應該在你的應用服務器中配置這些屬性。 –

+0

謝謝你的幫助!正如您所設想的,我使用'spring.datasource.url'而不是'spring.datasource.jndi-name'。當我使用'spring.datasource.url'時,有沒有辦法激活'spring.datasource。*'屬性? @ M.Deinum –

回答

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