J'ai un pool de connexions DBCP dans Tomcat. Le problème est que lorsque la connexion est brièvement perdue, l'application est interrompue parce que DBCP n'essaiera pas de se reconnecter plus tard lorsqu'il y a une connexion. Puis-je obtenir DBCP pour se reconnecter automatiquement?Reconnexion automatique de la connexion à la base de données
Répondre
Il y a 2 façons de « résoudre » ce, bien que les deux ont des problèmes:
Vous pouvez utiliser un « validationQuery » (voir ci-dessous) pour avoir une course de requête de test avant d'aller (en général quelque chose . comme « select 1 de double » qui sera utilisé pour tester les connexions avant/après vous/les 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 faire cela par requête , vous pouvez faire en sorte que idleEvictorThread le fasse en définissant testWhileIdle, bien que dans certaines versions, ce thread puisse provoquer une superposition en cas de charge élevée. Voir: http://commons.apache.org/dbcp/configuration.html pour plus de détails à ce sujet et d'autres options
Ne pensez pas DBCP fait, mais BoneCP (http://jolbox.com) peut être configuré pour lire automatiquement toutes les transactions lorsque le DB ou le réseau tombe en panne. C'est complètement transparent pour votre application.
Comment configurer ceci? –
Découvrez la fonctionnalité transactionReplay. Ne l'utilisez pas avec Hibernate (ils ont des bugs) – wwadge
Pour être sûr, appelez-vous 'connection.close()' dans le bloc 'finally' du bloc' try' lorsque vous l'avez acquis? Partout? *Vraiment oui? – BalusC