hibernate + c3p0 连接池的错误

hibernate + c3p0 连接池的错误,第1张

at oraclejdbcdriverOracleStatementclose(OracleStatementjava:1340)

这句话看着好像是Oracle的什么语句出现了错误 从hibernate里面配置从c3p0也就那么两句 应该不会出现什么错误吧?

建议别关注配置了。 看看你的代码有没有问题,获取了连接却没有关闭,导致连接越用越多,最后报获取不到有效的连接。

我只是批量处理了一些数据 其中调用了一些查询方法 用的是hibernate 并没有获取连接 只是查询的数据量比较大 不知道什么原因 总是抱连接超时

因为请求过多,所以Session要关闭,或者在配置里把连接池设置大一些

楼主描述正是MySQL8小时问题,这个问题还是比较容易解决的。

楼主用的连接池是C3P0吗?这里我以C3P0连接池为例来说明问题原因和解决方法。

问题原因:MySQL默认是自动关闭空闲超过8小时的连接,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成异常。重启Tomcat *** 作会使C3P0重新建立和数据库的连接池,且池内的连接都是有效的连接。

解决方法:c3p0要在8小时内关闭不使用的连接。这需要修改其中的一些配置参数,主要是maxIdleTime和idleConnectionTestPeriod。这两个参数的值要小于28800秒。

建议配置如下:

<!-- 每次都验证连接是否可用 -->

<property name="hibernatec3p0validate">true</property>

<!-- 检查连接池中所有空闲连接的间隔时间,单位为秒(要注意的是MySQL的自动关闭空闲超过8小时连接的机制) -->

<property name="hibernatec3p0idle_test_period">18000</property>

<!-- 连接的最大空闲时间,25000秒内未使用则连接被丢弃。单位为秒(要注意的是MySQL的自动关闭空闲超过8小时连接的机制) -->

<property name="hibernatec3p0timeout">25000</property>

附上在 hibernate中配置c3p0的关键字。

c3p0acquireIncrement hibernatec3p0acquire_increment

c3p0idleConnectionTestPeriod hibernatec3p0idle_test_period

c3p0maxIdleTime hibernatec3p0timeout

c3p0maxPoolSize hibernatec3p0max_size

c3p0maxStatements hibernatec3p0max_statements

c3p0minPoolSize hibernatec3p0min_size

以上就是关于hibernate + c3p0 连接池的错误全部的内容,包括:hibernate + c3p0 连接池的错误、连接池连接不上,为什么急在线等,求大神帮忙、Hibernate MySql 连接池隔天断开等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9696716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存