获取"无法执行查询" 13小时不活动后出错

时间:2012-01-16 06:00:53

标签: hibernate openjpa

我有以下设置: JSP / Servlet =>表示层。 Hibernate和OpenJPA =>数据访问层。

要连接到数据库,我将配置信息添加到“persistence.xml”文件中。以下是“persistence.xml”文件的条目:

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.connection.url" value="jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/test?autoReconnect=true"/>
<property name="hibernate.connection.username" value="xxx"/>
<property name="hibernate.connection.password" value="xxx"/>
<property name="hibernate.generate_statistics" value="true"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.OSCacheProvider"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.c3p0.min_size" value="5"/>
<property name="hibernate.c3p0.max_size" value="20"/>
<property name="hibernate.c3p0.timeout" value="1800"/>
<property name="hibernate.c3p0.max_statements" value="50"/>
<property name="hibernate.c3p0.idle_test_period" value="1800"/>
<property name="c3p0.idleConnectionTestPeriod" value="1810"/>

我收到org.hibernate.exception.JDBCConnectionException: could not execute query错误。经过13个小时或更长时间不活动。不一致地再现该错误。我无法在我的测试设置上重现错误,但生产服务器上会出现此错误。

我在论坛上搜索了一些类似于我的条目,但他们没有回答我的问题。链接是:

Getting org.hibernate.exception.JDBCConnectionException: could not execute query even through JNDI

Keep getting org.hibernate.exception.JDBCConnectionException: could not execute query

我错过了一些设置或做错了吗?

1 个答案:

答案 0 :(得分:0)

对我来说这是c3p0版本问题。在使用最新的c3p0版本时,没有观察到该问题。还有一些连接泄漏用于在抛出异常时发生。在finally块中添加连接释放代码。