论坛首页 Java企业应用论坛

『出错』hibernate3配置c3p0遇到的问题

浏览 53351 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-14  
请问这两个值间的设置有什么限制吗?
<property name="c3p0.timeout">300</property>

<!--<property name="c3p0.idle_test_period">120</property>-->
0 请登录后投票
   发表时间:2006-09-15  
请问这两个值间的设置有什么限制吗?
如果我连接池这两个属性设成这两个值,或这两个属性的值很接近,
当我启动tomcat,运行程序后,空闲60后,程序挂起,没有异常
<property name="c3p0.timeout">60</property>

<!--<property name="c3p0.idle_test_period">120</property>-->
如改以下俩值,或他们差距很大:

<property name="c3p0.timeout">600</property>

<!--<property name="c3p0.idle_test_period">60</property>-->

当我启动tomcat,运行程序后,空闲600后出现下列异常,但程序还照常运行,我怀疑跟我配置的c3p0有关,但我又没查出来,谁知道帮我看看,谢谢!
2006-08-29 17:09:00 [com.mchange.v2.async.ThreadPoolAsynchronousRunner:429]-[WARN] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@184a4f -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2006-08-29 17:09:00 [com.mchange.v2.async.ThreadPoolAsynchronousRunner:435]-[WARN] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@184a4f -- APPARENT DEADLOCK!!! Complete Status: [num_managed_threads: 3, num_active: 3; activeTasks: com.mchange.v2.resourcepool.BasicResourcePool$5@5ad36d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0), com.mchange.v2.resourcepool.BasicResourcePool$5@eeb372 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2), com.mchange.v2.resourcepool.BasicResourcePool$5@47098a (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1); pendingTasks: com.mchange.v2.resourcepool.BasicResourcePool$5@c3432a, com.mchange.v2.resourcepool.BasicResourcePool$5@6e96ff, com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@7b7b11, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@cc9d70, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@7456bc, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@ea85b4, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@efeff8, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@738a71, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@86167d, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@2e6c66, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@ced821, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@cf68af, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@e1f305, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@19ee8a, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@7bbfb8, com.mchange.v2.c3p0.stmt.GooGooStatementCache$2@67ec28]
0 请登录后投票
   发表时间:2006-09-24  
把max_statements设置为0。
c3p0在同时关闭statement和connection的时候,或者关闭他们之间的时间很短的时候,有时候connection并没有被关闭,因为有些preparedstatement还在被cached住。这是c3p0的作者自己说的。
http://forum.hibernate.org/viewtopic.php?t=947246&highlight=apparent+deadlock+c3p0

同时鄙视javaeye的版主,本人上星期因为同样的问题发了一个处女贴,不到2分钟被直接删除,没有任何理由。不要以为自己技术高就对这些问题不屑一顾,看这个帖子都发布了这么久,你们也没有什么答案,大家一起学习才能进步
1 请登录后投票
   发表时间:2006-09-25  
谢谢你的回答!我也发现了,把max_statements设置为0,但我想知道如果把max_statements设置为0,起不是缓存的preparedstatement的数量为0了,max_statements这个设置不是没用了啊,根据我查的文档和理解这个设置是不是缓存了我们最近用的preparedstatement语句啊,有利于我在做同样的操作时的执行效率啊,不知道我理解的是否正确,还有就是我把c3p0换成低版本的日志里就没有上面的异常了啊!

同时鄙视javaeye的版主,本人上星期因为同样的问题发了一个处女贴,不到2分钟被直接删除,没有任何理由。不要以为自己技术高就对这些问题不屑一顾,看这个帖子都发布了这么久,你们也没有什么答案,大家一起学习才能进步,对于这位朋友的话我很是赞同,我也是在此没有一个准确的答复之后,去了hibernate的官方网站查到的,而且那里回答的很仔细,尽管是英文的!还有就是咱们不是要“做最棒的软件开发交流社区”吗?大家就应该互相帮助,共同学习,共同进步啊!也许认为我们是”新手“,问的问题简单,不削一顾,别忘了大家都是从“新手”做起来的啊!

呵呵,话说多了,跑题了。还是看问题吧。
1 请登录后投票
   发表时间:2006-09-25  
1版主有权删除贴子
2如果有问题请参考第一条。。。
0 请登录后投票
   发表时间:2006-09-25  
yg 写道
谢谢你的回答!我也发现了,把max_statements设置为0,但我想知道如果把max_statements设置为0,起不是缓存的preparedstatement的数量为0了,max_statements这个设置不是没用了啊,根据我查的文档和理解这个设置是不是缓存了我们最近用的preparedstatement语句啊,有利于我在做同样的操作时的执行效率啊,不知道我理解的是否正确,还有就是我把c3p0换成低版本的日志里就没有上面的异常了啊!

我想新的c3p0可能想优化关闭statement和connection,所以用了asynchronous的关闭方法,可能有些jdbc driver不支持这种方式,导致connection没关闭而出现死锁。我希望hibernate自己做个connection pooling的接口,3rd party的不稳定啊。

yg 写道
还有就是咱们不是要“做最棒的软件开发交流社区”吗?大家就应该互相帮助,共同学习,共同进步啊!也许认为我们是”新手“,问的问题简单,不削一顾,别忘了大家都是从“新手”做起来的啊!

是的,论坛我也做过,注册并经常在线的朋友2,3万(每天),要做个好的论坛,一定要求同存异,孤芳自赏式的管理方式,无论你有多牛,是做不到最好的。
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics