Reconnexion automatique de la Connexion de Base de données
J'ai un DBCP pool de connexion à Tomcat. Le problème est que lorsque la connexion est perdue brièvement l'appliction est brisé parce que DBCP ne vais pas essayer de se reconnecter à nouveau plus tard, quand il y a une connexion. Puis-je obtenir DBCP à se reconnecter automatiquement?
Pour être sûr, vous appelez
connection.close()
dans le finally
bloc de la try
bloc que vous avez acquis? Partout? Vraiment? Oui?OriginalL'auteur wesley | 2010-03-30
Vous devez vous connecter pour publier un commentaire.
Il y a 2 façons de "résoudre" ce, bien que les deux ont quelques questions:
Vous pouvez utiliser un "validationQuery" (voir ci-dessous) pour avoir un test de l'exécution de la requête avant de vous rendre (généralement quelque chose comme 'select 1 from dual" qui sera utilisé pour tester les connexions avant/après vous avoir/donner à la piscine. Cela ajoute un appel supplémentaire par demande de connexion de la piscine. Voir: http://wiki.apache.org/commons/DBCP
Au lieu de le faire par requête, vous pouvez avoir la idleEvictorThread le faire par la mise en testWhileIdle, bien que dans certaines versions de ce thread peut provoquer le blocage sous forte charge. Voir: http://commons.apache.org/dbcp/configuration.html pour plus de détails sur cette question et d'autres options
OriginalL'auteur jayshao
Ne pense pas que DBCP le fait, mais BoneCP (http://jolbox.com) peut être configuré pour lire automatiquement toutes les transactions lors de la DB ou réseau tombe en panne. C'est complètement transparent pour votre application.
Découvrez la transactionReplay fonctionnalité. Ne pas l'utiliser avec mise en veille prolongée (ils ont des bugs)
OriginalL'auteur wwadge