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 连接池隔天断开等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)