2017-09-08 9 views
0

Je me rends compte qu'il y a d'autres questions semblables à la mienne mais je pense que la mienne est un peu différente alors je vais le demander de toute façon. J'ai utilisé hibernate pour développer une application web java et je n'ai eu aucun problème quand je l'ai lancé sur un serveur Tomcat localhost. J'ai, cependant, rencontré des problèmes après avoir essayé de le déployer sur Heroku et d'utiliser la version gratuite de ClearDB car le site Web lancerait une exception au hasard. Plus précisément, je reçois unÉchec du lien de communication ClearDB

org.hibernate.exception.JDBCConnectionException: Communications link failure 

choses que j'ai trouvé sur google, mais croyez pas mon problème:

  • base de données a été inactive pendant trop longtemps (> 8 heures). J'ai continuellement utilisé le site Web, donc il n'a certainement pas été inactif pendant plus de 8 heures.
  • Trop de connexions à la base de données. Je suis le seul qui est actuellement connecté à la base de données et le site dit il y a un maximum de 10 connexions, donc je suis dans leur limite

Mon fichier de configuration

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.password">PASSWORD</property> 
    <property name="hibernate.connection.url">jdbc:mysql://DBURL?reconnect=true</property> 
    <property name="hibernate.connection.username">USERNAME</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name= "hbm2ddl.auto">update</property> 
    <property name="show_sql">true</property> 
</session-factory> 

Merci à l'avance

Répondre

1

Je serais prêt à parier que cela va loin si vous utilisez JawsDB add-on au lieu de ClearDB:

$ heroku addons:destroy cleardb 
$ heroku addons:create jawsdb:kitefin 

J'ai tellement de problèmes avec ClearDB.

Si vous devez utiliser ClearDB, je recommande d'ajouter un connectionTestQuery à votre configuration de pool de connexions de base de données. Je ne sais pas comment faire génériquement, mais si vous utilisez HikariCP (ce qui est grand et vous devez utiliser), vous pouvez ajouter quelque chose comme:

<property name="hibernate.hikari.connectionTestQuery">SELECT 1</property> 
0

ClearDB ferme régulièrement des liens avec l'état de veille/sommeil pour plus de 60 secondes. Cela se produit lorsque votre système pense qu'il a une connexion DB mais que l'hôte distant l'a fermé. Comme l'a mentionné le répondant précédent, une connectionTestQuery rapide devrait résoudre ce problème.