精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-08-30
windows 2000+tomcat5.0+hibernate3.0+SQL Server2000 配置文件: <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="show_sql">true</property> <property name="current_session_context_class">thread</property> <!--Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数--> <property name="jdbc.fetch_size">20</property> <!--Batch Size是设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,有点相当于设置Buffer缓冲区大小的意思--> <property name="jdbc.batch_size ">20</property> <property name="connection.username">HNMC</property> <property name="connection.password">sundy</property> <property name="connection.url">jdbc:oracle:thin:@192.168.0.20:1521:ora9</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!--C3P0 setting--> <property name="c3p0.max_size">20</property> <property name="c3p0.min_size">5</property> <!--获取连接的等待时间--> <property name="c3p0.timeout">3600</property> <property name="c3p0.max_statements">100</property> <!--每隔3600毫秒测试连接是否可以正常使用--> <property name="c3p0.idle_test_period">3600</property> <property name="c3p0.acquire_increment">2</property> <mapping resource="com/sundy/hnmc/beans/AccountBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/AlertBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/ConfigBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/PartitionBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/DateStatBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/FormulaBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/FunctionBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/HotelBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/IpUseBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/LogBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/MonthStatBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/NetLogBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/RoleBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/RsendBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/RuleBean.hbm.xml"/> <mapping resource="com/sundy/hnmc/beans/ModuleBean.hbm.xml"/> </session-factory> </hibernate-configuration> 错误提示信息: 当我启动tomcat,运行程序后,空闲一个小时后出现下列异常:我怀疑跟我配置的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] 你的分析: <property name="c3p0.idle_test_period">3600</property> 是跟这个设置有关吗? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-08-30
<!-- 使用C3PO连接池程序 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="hibernate.c3p0.max_size">2</property> <property name="hibernate.c3p0.min_size">2</property> <property name="hibernate.c3p0.timeout">50000</property> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">false</property> |
|
返回顶楼 | |
发表时间:2006-08-30
谢谢上面的回答!
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 这个必须得有吗? 还有就是其它值的设置,具体大小根据什么情况来设?它们之间有什么关连吗?我的程序出现的异常可能是有哪个设置产生的呢? 最后就是hibernate3.0好象没有这个参数? <property name="hibernate.c3p0.validate">false</property> |
|
返回顶楼 | |
发表时间:2006-08-30
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
必须要有,具体可看hibernate.property。 另<property name="hibernate.c3p0.validate">false</property>确实在hibernate中不可设置 包含它的其它属性要用c3p0.property设定。 |
|
返回顶楼 | |
发表时间:2006-08-30
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
我加了这个还是出现啊,谁知道错在哪了,帮忙看一下,谢谢了! |
|
返回顶楼 | |
发表时间:2006-08-30
哦,闲置后出现的问题。
检查是否数据库或网络有会话的时间限制。 再不行可能要设置c3p0的无效连接检验了。 |
|
返回顶楼 | |
发表时间:2006-08-30
检查是否数据库或网络有会话的时间限制
什么意思? 再不行可能要设置c3p0的无效连接检验了 hibernate3里的c3p0源文件里没有这个参数啊,除非修改源文件 |
|
返回顶楼 | |
发表时间:2006-08-30
1.我认为可能是因为网络中断的错误,所以叫你检查是否数据库或网络有会话的时间限制。
一些服务器会在你空闲一段时间后断开你的连接。 但细看你的错误信息,似乎说是死锁,这个要你自己仔细看看E文了。如果真是死锁,注意事务的问题。 2.可以加个c3p0.property去设定的,你可以查查c3p0网站的说明。 |
|
返回顶楼 | |
发表时间:2006-08-30
谢谢你耐心的解答!
不是网络中断啊 但细看你的错误信息,似乎说是死锁,这个要你自己仔细看看E文了。如果真是死锁,注意事务的问题。 对于这个我有点不明白了,我也知道那个好象是死锁,但是我是在空闲时出现的啊?为什么啊? |
|
返回顶楼 | |
发表时间:2006-08-31
我去掉c3p0就不会有这个问题了
请问谁遇到过这样的问题,怎么解决的啊? |
|
返回顶楼 | |