2009-05-08 8 views
0

J'ai un problème concernant le pilote proxool et le pilote Oracle dans Tomcat.Problème de déploiement à chaud dans Tomcat avec proxool et oracle

L'application Web que j'utilise contient un fichier jar webservice utilisant metro et une servlet pour initialiser/démarrer le pool proxool. Le pool proxool est configuré avec une connexion Oracle. Lorsque le service est appelé, il extrait une connexion du pool, exécute une instruction et renvoie. Je ferme le resultset, l'instruction et la connexion dans la méthode de service après.

Lorsque j'essaie maintenant de redéployer à chaud l'application Web, la servlet arrête le pool proxool par ProxoolFacade.shutdown(); dans sa méthode de détruire.

Le problème est que l'annulation de déploiement à chaud ne peut pas se terminer car le pilote Oracle ojdbc5.jar ne peut pas être supprimé du dossier de l'application Web extraite.

En procédant de même avec une base de données de serveur SQL et le pilote jtds, cela fonctionne sans problème.

versions d'occasion: Apache Tomcat 6.0.18 pilote JDBC Oracle 11g 11.1.0.6.0 Proxool 0.9.1

Quelqu'un a une idée?

Cordialement Timo

Répondre

0

Vous devez ajouter le pilote Oracle à l'instance Tomcat et configurer Tomcat JNDI with an Oracle datasoure. De cette façon, le pilote restera actif lorsque l'application sera terminée et Tomcat contrôlera la mise en pool des connexions DB. La raison de votre problème est que certains pilotes de base de données "se connectent" à la machine virtuelle. Cela signifie que Tomcat ne peut pas décharger les classes pendant redéployer - il y a toujours des références autour.

Je suggère même d'essayer de déplacer proxool dans le serveur Tomcat et que Tomcat gère les pools pour vous. Cela rendrait le déploiement à chaud beaucoup plus rapide et plus fiable, même si vous fuyez les connexions.

Questions connexes