7
votes

Échec de la liaison de communication Hibernate dans l'application de servlet Java basée sur Hibernate Powered par mysql

Permettez-moi de décrire ma question -

J'ai une application Java - hibernate en tant que couche d'interface DB sur MySQL. Je reçois l'erreur de défaillance de la liaison de communication dans ma demande. La présence de cette erreur est un cas très spécifique. Je reçois cette erreur lorsque je quitte le serveur MySQL sans surveillance pendant plus d'environ 6 heures (c'est-à-dire quand il n'y a pas de requêtes émises à MySQL pendant plus d'environ 6 heures). Je contemplé une description de niveau «Exception» supérieure ci-dessous et l'ajout d'un lien Pastebin pour une description détaillée StackTrace.

javax.persistence.persistenceException: org.hibernate.exception.jdbcconnectionException: Impossible d'ouvrir la connexion - Causé par: org.hibernate.exception.jdbcconnectionException: Impossible d'ouvrir la connexion - Causé par: com.mysql.jdbc.exceptions.jdbc4.comMunicationSexception: Échec de la liaison de communication - le dernier paquet reçu avec succès du serveur était 1 274 868 181,212 millisecondes il y a. Le dernier paquet envoyé avec succès à Le serveur était il y a 0 millisecondes. - Causé par: com.mysql.jdbc.exceptions.jdbc4.comMunicationSexception: Échec de la liaison de communication - le dernier paquet reçu avec succès du serveur était 1 274 868 181,212 millisecondes il y a. Le dernier paquet envoyé avec succès à Le serveur était il y a 0 millisecondes. - Causé par: Java.net.ConnectException: connexion refusé: connectez

Le lien vers la Pastebin pour une enquête plus complète - http://pastebin.com/4kujamgd

Ce que je comprends à partir de ces déclarations d'exception est que MySQL refuse de prendre des connexions après une période d'activité inactive / nil. Je lisais un peu de choses à ce sujet via Google Search et je suis venu de savoir que l'un des moyens possibles de la surmonter est de définir des valeurs pour les propriétés C3P0, car C3P0 est livré avec Hibernate. Spécifiquement, j'ai lu d'ici http://www.mchange.com/projects/c3p0/ index.html qui réglage deux propriétés idleconnectionStestesperiod et PreferreDreDequery résoudra ceci pour moi. Mais ces valeurs ne semblent pas avoir eu un effet.

Est-ce la bonne approche pour la corriger? Sinon, quelle est la bonne façon de surmonter cela?

Les questions suivantes sont des questions relatives à la défaillance de la liaison de communications sur Stackoverflow.com, mais je n'ai pas trouvé de réponse satisfaisante dans leurs réponses. com.mysql.jdbc.Exception.jdbc4.comMunicationSException: échec de la liaison de communication Comment gérer: défaillance de la liaison de communication

Note 1 - Je ne reçois pas cette erreur lorsque j'utilise ma candidature continuelle. NOTE 2 - J'utilise jpa avec hibernate et donc mon hibernate.dialect, etc. hibernate Propriétés réside dans la persistance.xml dans le dossier Meta-Inf (cela empêche-t-il que les propriétés C3P0 de travailler?)

éditer - Les paramètres C3P0 que j'ai essayés sont dans les commentaires


2 commentaires

Veuillez mettre à jour votre question pour inclure la configuration complète Hibernate C3P0.


Ici, ils sont - Sélectionnez 1; 2


4 Réponses :


5
votes

J'ai eu un problème auparavant. Cela ressemble à MySQL Server Times Out votre connexion. Le délai d'attente est de 28800 par défaut, ce qui est 8 heures. Veuillez vous reporter à ce lien pour plus de détails.

http://shengchien.blogspot.com/2009/ 10 / hibernate-c3p0-and-mysql.html

J'espère que cela vous est utile.


1 commentaires

Laissez-moi essayer cela et je vous ferai savoir, merci sheng



1
votes

Même si je suis confronté à cette erreur, je l'ai été résolue seulement après avoir activé Autoreconnect = true dans c3P0 config xxx


0 commentaires

0
votes

J'ai résolu ma défaillance de la liaison de communication avec C3P0. Je suis tombé sur le blog ci-dessous qui a expliqué que le la version ORG.Hibernate doit être égale à la version C3P0, Il s'agit donc de la configuration POM qui a fait ma journée xxx pré>

comme il l'explique, il suffisait d'ajouter une seule propriété à hibernate.cfg.xml Pour obtenir la mise en commun C3P0 P>

       <property name="hibernate.c3p0.min_size">10</property>


0 commentaires

0
votes

Pour moi, j'ai rétrogradé Java SE Runtime Environment à 1.8.0_281 et ça marche bien.


0 commentaires