2013-05-19 146 views
0

我们正在将我们的应用程序从Hibernate deault pool迁移到C3P0java.sql.SQLRecoverableException:关闭结果集:下一个

我们的应用程序在默认池配置中正常运行。但用C3P0它会显示下面的异常。

16:45:35,890 | DEBUG | com.mchange.v2.sql.SqlUtils - 试图将SQLException转换为SQLException。离开它独自一人。 [SQLState:08003;错误码:17010] java.sql.SQLRecoverableException:关闭结果集:下 在oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:214)

我们对C3P0配置低于

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
    <property name="hibernate.c3p0.min_size">20</property> 
    <property name="hibernate.c3p0.max_size">200</property> 
    <property name="hibernate.c3p0.timeout">3000</property> 
    <property name="hibernate.c3p0.max_statements">50</property> 
    <property name="hibernate.c3p0.idle_test_period">3000</property> 

而我们正在使用C3P0.0.9.1.2 jar进行配置。

感谢您提供帮助。

回答

0

这基本上是一条跟踪消息。 c3p0将在DEBUG级别记录很多内容。一般来说,c3p0库旨在在INFO上进行登录。

所有的消息告诉你,c3p0观察到一个异常,为了符合JDBC API,将需要重新抛出为SQLException。但是,它已经是一个SQLException了,所以c3p0让它一个人留下。它看起来好像您的应用程序在关闭的结果集上调用了next()。如果此消息没有出现异常的一些证据,则您的应用程序可能会处理(或吞下或执行某些操作)。希望它做对了。

最简单的解决方案是将com.mchange中的记录器的记录级别设置为INFO。

然后请升级到c3p0-0.9.2.1。