1

我正在开发一个通过 JPA 和 Hibernate 4.2.3 完成持久性的应用程序。一切都在第一刻正常工作。

但是,当您花费一定时间(在我的情况下是一天)应用程序时,会出现以下错误。

ERROR: Communications link failure

The last packet successfully received from the server was 259.217.434 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.

Abaixo deixo meu persistence.xml...

<persistence-unit name="amh_sys" transaction-type="RESOURCE_LOCAL">

<provider>org.hibernate.ejb.HibernatePersistence</provider>

<properties>

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />

<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/amh_sys" />

<property name="javax.persistence.jdbc.user" value="root"/>

<property name="javax.persistence.jdbc.password" value="root"/>

<property name="hibernate.show_sql" value="false" />

<property name="hibernate.format_sql" value="false" />

<property name="hibernate.use_sql_comments" value="false" />

<property name="hibernate.jdbc.wrap_result_sets" value="false" />

<property name="hibernate.hibernate.cache.use_query_cache" value="true" />

<property name="hibernate.c3p0.validate" value="true" />

</properties>

</persistence-unit>

我尝试使用 C3P0 连接池进行配置,但是出现了同样的错误……下面是 C3P0 的配置。

<!-- Important -->

<property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" />

<property name="hibernate.c3p0.max_size" value="100" />

<property name="hibernate.c3p0.min_size" value="0" />

<property name="hibernate.c3p0.acquire_increment" value="1" />

<property name="hibernate.c3p0.idle_test_period" value="300" />

<property name="hibernate.c3p0.max_statements" value="0" />

<property name="hibernate.c3p0.timeout" value="100" />

我可以通过更改您计算机上的日期来强制出错,因为 MySQL 获取与参考相同的日期。我无法解决这个问题,我希望这里有人尝试分享您应用的解决方案时遇到同样的问题。

费利佩。

4

1 回答 1

0

如果 MySQL 服务器空闲时间过长,它将超时连接。http://dev.mysql.com/doc/refman/5.0/en/gone-away.html您可以在超时时间内使用计划查询来保持连接处于活动状态或通过关闭并重新创建来重新建立连接实体管理器

于 2013-11-06T22:06:22.147 回答