[英]Hibernate JDBCConnectionException - C3p0 connection pooling
我们正在使用HibernateORM为mysql数据库使用C3p0连接池。
以下是hibernate.cfg.xml中的设置
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">300</property>
<property name="hibernate.c3p0.maxConnectionAge">3600</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="hibernate.c3p0.max_size">300</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1;</property>
为了在28800秒后重新连接到数据库,我们设置了参数-
c3p0.testConnectionOnCheckout=true
但是我们正面临休眠异常。
因此,如果现在立即调用数据库并等待8个小时(或设置my.cnf的变量wait_timeout的时间长短),那么如果再次调用该数据库,则会出现该异常。 堆栈跟踪 -
org.hibernate.exception.JDBCConnectionException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2536)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
为了快速解决此问题,我们每天早晨重新启动应用程序服务器。
任何帮助,将不胜感激
- 谢谢
如果您的配置是您的实际想法,则这些异常绝不会来自过时的连接,这些连接在闲置并在池中超时后被检出。 一个小时后的连接无论如何都会过期,它们永远不会闲置超过五分钟,并且会在结帐时进行测试。
发生两件事之一:
1)您没有想要的配置,配置和它打算配置的c3p0数据源之间的中间出问题了。
幸运的是,c3p0数据源在初始化时以INFO级别转储其配置。 检查您的日志,并验证您的池是否具有您想要的配置。
2)也许您的应用程序将Connections保留在池外,而不是将它们检查一小段时间并关闭()将它们关闭,以便c3p0 ca可以进行所有测试,到期等操作,如果您的应用程序长时间持有Connections他们超时了,c3p0对此无能为力。 c3p0可以帮助您测试这是否正在发生。 尝试使用配置参数unreturnedConnectionTimeout和debugUnreturnedConnectionStackTraces。 一起使用。 看到
http://www.mchange.com/projects/c3p0/#configuring_to_debug_and_workaround_broken_clients
http://www.mchange.com/projects/c3p0/index.html#unreturnedConnectionTimeout
http://www.mchange.com/projects/c3p0/index.html#debugUnreturnedConnectionStackTraces
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.