tenter de se reconnecter jdbc piscine de la source de données après le redémarrage de la base de données
J'ai une application web avec Java back-end qui utilise Tomcat jdbc-piscine pour les connexions de base de données. Cela fonctionne très bien.
Cependant je suis en train de l'infaillible il avant de l'exporter à d'autres endroits, et, récemment, un scénario est le cas lorsque quelqu'un redémarrage de la base de données SQL Server service, mais n'a pas de redémarrer le service Tomcat. Cela a provoqué une SQLException: java.sql.SQLException: I/O Error: Connection reset by peer: socket write error
jusqu'à ce que j'ai redémarré le serveur Tomcat, forçant le pilote jdbc-piscine de la source de données pour vous reconnecter.
J'ai regardé pour un certain type de configuration dans le serveur Tomcat jdbc-piscine docs à dire à la source de données pour tenter de se reconnecter, mais je ne pouvais pas trouver quoi que ce soit.
Personne ne sait si il y a une sorte de configuration pour cela ou dois-je vérifier cette condition avant chaque requête?
OriginalL'auteur Geronimo | 2012-07-02
Vous devez vous connecter pour publier un commentaire.
Pas sûr à 100% si c'est votre problème, mais sur http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency il est dit que vous pouvez utiliser
testOnBorrow
avec unvalidationQuery
.timeBetweenEvictionRunsMillis="5000"
etminEvictableIdleTimeMillis="5000"
etminIdle="0"
qui semble gérer le problème, merci.eh bien, je upvoted votre commentaire hier, mais aujourd'hui, j'ai réalisé qu'à l'aide de
minIdle="0"
peut effectivement être pire: c'est en fait la fermeture de la connexion au bout de 5s d'inactivité, si c'est bien ou pas. Donc je ne sais pas ce qui est pire: l'exécution deSELECT 1
avant chaque requête ou d'avoir à se reconnecter toutes les 5s de l'inactivité...OriginalL'auteur Natan Cox
Juste pour ajouter à Nathan Cox réponse
De référence - http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html#Common_Attributes
Contre Geronimo, je voudrais encore à utiliser validationQuery
Base de données validationQuery notes
hsqldb -
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
Oracle -
select 1 from dual
DB2 -
select 1 from sysibm.sysdummy1
mysql -
select 1
microsoft SQL Server -
select 1
postgresql -
select 1
ingres -
select 1
derby -
values 1
H2 -
select 1
Firebird -
select 1 from rdb$database
De référence - DBCP - validationQuery pour différentes Bases de données
OriginalL'auteur Indu Devanath
Lors de la vérification pour le même problème, je suis tombé sur ce post qui a la connexion automatique des configurations pour toutes les applications serveurs.
Ci-dessous sont la configuration que j'ai utilisé pour la connexion automatique dans tomcat pour référence.
Complet auto connect configurations pour tous les serveurs d'application peuvent être trouvés ici dans Source de données autoreconnect dans les Serveurs d'Applications Java.
OriginalL'auteur user1472187