Comment puis-je obtenir Printemps de Démarrage pour se reconnecter automatiquement à PostgreSQL?
Je suis en cours d'exécution Printemps de Démarrage connexion à une base de données PostgreSQL. J'ai vérifié que les données sont écrites dans la base de données si Spring Boot est commencé après la base de données.
spring.datasource.url = jdbc:postgresql://localhost/dbname
spring.datasource.username = user
spring.datasource.password = secret
spring.datasource.driver-class-name = org.postgresql.Driver
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
Quand il y a des changements dans la base de données en développement, j'ai couru dans les exceptions:
PreparedStatementCallback; SQL []; This connection has been closed.; nested exception is org.postgresql.util.PSQLException: This connection has been closed.
Noter que la base de données est accessible à nouveau lorsque les exceptions; je pense que le problème est que la connexion est obsolète, car la base de données de point de terminaison il connecté à l'origine n'est plus disponible en raison de la redémarrer. Le redémarrage de Printemps de Démarrage résout le problème.
Comment puis-je configurer Spring Boot à se reconnecter à PostgreSQL de sorte que je n'ai pas besoin de le redémarrer?
J'ai tenté de suivre les réponses dans Printemps de Démarrage JPA - la configuration de reconnexion automatique et Comment reconnecter base de données si la fermeture de la connexion au printemps jpa?. Je ne suis pas sûr de savoir si le PostgreSQL comportement est différent de MySQL. Ma lecture de la Printemps de Démarrage de la documentation n'a pas aidé, je ne connais pas les composants décrit assez bien pour comprendre quels sont les documents que je devrais être en train de regarder.
- Qui le pool de connexion utilisez-vous? Si vous ne l'utilisez pas, vous pouvez essayer de passer à Hikari. J'ai vu ce type de problèmes dans le passé avec
tomcat-jdbc
qui est la valeur par défaut du pool de connexion pour le moment. - Vous avez test sur les emprunter, mais vous avez sans doute aussi souhaitez définir le vérifier lors de l'inactivité et du délai d'inactivité. De cette façon, les connexions sont vérifiés régulièrement et retiré de la piscine si l'invalide.
- Je pense que je suis en utilisant tomcat-jdbc parce que mon pom comprend printemps-amorçage-starter-jdbc.
Vous devez vous connecter pour publier un commentaire.
Printemps de démarrage doit être configuré pour se reconnecter automatiquement, le problème est qu'il n'est pas au courant de la rupture de la connexion.
Puisque vous êtes déjà à l'aide de test sur les emprunter et de validation de la requête, juste essayer de la réduction de la validation de l'intervalle de de sorte qu'il est exécuté à chaque fois.
Tomcat pool de connexions jdbc sur
testOnBorrow
:Mais être conscient de
validationInterval
:validationInterval
la valeur par défaut doit être3000 (3 seconds)
, n'est-ce pas?