JDBC Driver a été désenregistré de force par Tomcat 7, pourquoi?
J'ai un problème dans tomcat 7, et voici quelques infos à ce sujet,
1 - j'ai ce message:
INFO: Reloading Context with name [/WebApp] has started
Oct 04, 2013 12:20:50 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/WebApp] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Oct 04, 2013 12:20:50 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/WebApp] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak.
Oct 04, 2013 12:20:51 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/WebApp] is completed
2 - Lorsque je recharge la demande, le problème a été résolu pendant environ 20 heures, puis revient à nouveau.
3 - j'ai environ 10 application déployée sur le serveur tomcat, mais seulement 2 d'entre eux obtient cette erreur.
4 - le problème n'était pas exister de la mendicité avec ces 2 applications, mais semble être d'environ 2 semaines.
Alors, comment puis-je résoudre ce et est-il lié à mon code?
source d'informationauteur AAH
Vous devez vous connecter pour publier un commentaire.
Lorsque vous arrêtez d'une application web Tomcat, il tente d'arrêter le fils qu'il a commencé et ferme un tas de ressources, par exemple les pilotes JDBC. Bien que dans ce cas, il est capable de se fermer, il est plus sûr de le faire vous-même.
Vous pouvez le faire dans un
ServletContextListener
. J'ai mis en place le mien comme suitMySQL ne démarre un Thread que Tomcat ne peut pas fermer. Pour les versions actuelles (5.1.23+), elles ont fourni la
AbandonedConnectionCleanupThread
classe pour fermer le ponduThread
comme vous pouvez le voir ci-dessus.Si vous avez votre Connecteur/J pilote JDBC dans chaque webapp est
WEB-INF/lib
répertoire, alors vous aurez probablement des problèmes similaires avec l'ensemble de vos webapps -- pas seulement celui.Si vous utilisez Tomcat, pool de connexions JDBC, alors vous devriez mettre le Connecteur/J pilote dans Tomcat
lib/
répertoire et de le retirer de l'ensemble de vos webapps. Si vous êtes le maintien de votre propre pool de connexion à partir de votre propre application, vous devrez prendre les dispositions nécessaires pour le pilote JDBC de s'inscrire avec le mondialDriverManager
. Mieux encore, utilisez le Connecteur/J la non-inscription de pilote à la place de l'inscription pilote, puis vous n'avez pas à vous inquiéter au sujet de ces sortes de fuites que Tomcat est réellement en vous protégeant de.