Je rencontre un problème avec le pool de connexions jdbc sur glassfish qui distribue des connexions de base de données mortes. J'utilise Glassfish 3.1.2.2 en utilisant jconn3 (com.sybase.jdbc3) pour me connecter à Sybase 12.5. Notre organisation a un processus de redémarrage nocturne pendant lequel nous redémarrons le serveur Sybase. Mon problème se manifeste lors d'une tentative d'utilisation d'une connexion à une base de données au cours du redémarrage. Voici l'ordre des opérations pour générer mon problème:Les connexions mortes sont renvoyées au pool de connexions JDBC - Glassfish 3.1.2.2
J'ai mis en place un singleton de récupération de base de données qui tente de se remettre de ce scénario. Chaque fois qu'une exception de base de données se produit, j'effectue un appel jmx pour suspendre toutes les files d'attente et exécuter une opération flushConnectionPool sur le pool de connexions JDBC. Si la connexion à la base de données n'est toujours pas établie, le processus configure une minuterie pour réessayer dans 10 minutes. Bien que ce processus fonctionne, il n'est pas sans défauts.
Je me rends compte qu'il existe un paramètre sur le pool de sorte que vous pouvez avoir besoin de validation sur la connexion à la base de données avant de le distribuer, mais j'ai évité cela pour des raisons de performances. Mon processus effectue environ 5 millions de transactions de base de données par jour.
Ma question est, est-ce que quelqu'un connaît un moyen d'éviter de retourner une connexion morte à la piscine en premier lieu?