我意识到还有其他类似于我的问题,但我觉得我的情况有点不同,所以无论如何我都会问它。我一直在使用hibernate来开发一个java Web应用程序,并且在我在localhost Tomcat服务器上运行时没有遇到任何问题。但是,在尝试将其部署到Heroku并使用ClearDB的免费版本之后,我已经遇到了问题,因为该网站将随机抛出异常。具体来说,我得到了一个
org.hibernate.exception.JDBCConnectionException: Communications link failure
我在谷歌上发现但我认为不是我的问题:
我的配置文件
<?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>
提前致谢
答案 0 :(得分:1)
如果您使用JawsDB add-on而不是ClearDB,我愿意打赌这会消失:
$ heroku addons:destroy cleardb
$ heroku addons:create jawsdb:kitefin
我对ClearDB有很多问题。
如果必须使用ClearDB,我建议在数据库连接池配置中添加connectionTestQuery
。我不确定如何一般地执行此操作,但如果您使用的是HikariCP(这很棒且您应该使用),您可以添加以下内容:
<property name="hibernate.hikari.connectionTestQuery">SELECT 1</property>
答案 1 :(得分:0)
ClearDB通常会关闭具有空闲/睡眠状态的连接超过60秒。当您的系统认为它具有数据库连接但远程主机已关闭它时,会发生这种情况。正如之前的受访者所提到的,快速的connectionTestQuery应该解决这个问题。