2017-09-04 1 views
1

Mon application utilise les cadres et le serveur d'applications ci-dessous:Comment garder la connexion avec démarrage Spring, Hibernate et Websphere Application Server

  1. Spring Boot (1.5.4.RELEASE) avec mise en veille prolongée.

  2. Websphere Application Server Liberté pour Java sur Bluemix

L'application fonctionne très bien mais après le temps d'exécution pour les connexions heures dehors. Voir l'exception suivante:

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 

Je sais que le démarrage du ressort doit être défini dans properties.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 

Cependant, j'ai trouvé avec botte de printemps 1.3+, il faut utiliser les paramètres spécifiques à l'implémentation en utilisant leur préfixe respectif (spring.datasource.tomcat. , spring.datasource.hikari., et au printemps. datasource.dbcp2. *), et (apparemment) ne supporte pas Websphere Application Server Liberty Profile.

Ma question est comment dois-je configurer pour maintenir les connexions en vie (ou les renouveler)?

Merci d'avance!

+0

La mise en œuvre dépend de votre source de données PAS votre serveur d'applications. A en juger par le fait que vous avez un 'spring.datasource' utilisé, je suppose que vous n'utilisez pas' spring.datasource.jndi-name' et que vous utilisez donc l'un des pools de connexions pris en charge. Si ce n'est pas le cas, les propriétés 'spring.datasource' (à l'exception de celle de' jndi-name') sont pratiquement inutiles car elles doivent être configurées sur votre serveur d'applications. –

+0

Nous vous remercions de votre aide! Comme vous l'avez supposé, j'utilise 'spring.datasource.url' au lieu de' spring.datasource.jndi-name'. Est-il possible d'activer les propriétés 'spring.datasource. *' Quand j'utilise 'spring.datasource.url' ??? @ M.Deinum –

Répondre

0

Quelle source de données utilisez-vous? Dans notre cas, nous utilisons Tomcat qui est l'option par défaut. Nous avons donc

# 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