用proxool做hibernate连接池时出现的奇怪异常!

teedry 2010-01-25 09:54:39
下面是我在用proxool做hibernate连接池时出现的奇怪错误,查询一直在不停地输出,好像进入死循环一样,之后就出现了这样的异常:希望各位朋友看看到底是什么原因造成的?用默认的JDBC连接池好像没有出现过这种情况。
javax.servlet.ServletException: Servlet execution threw an exceptionINFO - Proxool statistics legend: "s - r (a/t/o)" > s=served, r=refused (only shown if non-zero), a=active, t=total, o=offline (being tested)
WARN - 003091 (01/15/00) - #15 registered a statement as closed which wasn't known to be open. This could happen if you close a statement twice.
ERROR - Unexpected exception whilst calling rollback during connection reset
java.sql.SQLException: 违反协议
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:149)
at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:566)
at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:1135)
at org.logicalcobwebs.proxool.ConnectionResetter.reset(ConnectionResetter.java:246)
at org.logicalcobwebs.proxool.ConnectionPool.resetConnection(ConnectionPool.java:918)
at org.logicalcobwebs.proxool.ProxyConnection.close(ProxyConnection.java:237)
at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:134)
at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
at $java.sql.Connection$$EnhancerByProxool$$4093a7fb.close(<generated>)
at org.hibernate.connection.ProxoolConnectionProvider.closeConnection(ProxoolConnectionProvider.java:71)
at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:445)
at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:379)
at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:318)
at org.hibernate.impl.SessionImpl.close(SessionImpl.java:298)
at com.hibernate.HibernateUtil.closeSession(HibernateUtil.java:140)
at com.hibernate.HibernateFilter.doFilter(HibernateFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
ERROR - #0015 encountered errors during destruction:
java.sql.SQLException: 违反协议
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:149)
at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:463)
at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1174)
at org.logicalcobwebs.proxool.ProxyConnection.reallyClose(ProxyConnection.java:192)
at org.logicalcobwebs.proxool.ConnectionPool.removeProxyConnection(ConnectionPool.java:423)
at org.logicalcobwebs.proxool.HouseKeeper.sweep(HouseKeeper.java:90)
at org.logicalcobwebs.proxool.HouseKeeperThread.run(HouseKeeperThread.java:39)
proxoolConf.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>cmmb_admin</alias>
<driver-url>
jdbc:oracle:thin:@localhost:1521:xxx
</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="xxx"/>
<property name="password" value="xxx"/>
<!-- 自动重连 -->
<property name="autoReconnect" value="true"/>
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),
侦察到空闲的连接就马上回收,超时的销毁-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的
用户连接就不会被接受 -->
<simultaneous-build-throttle>10</simultaneous-build-throttle>
<!-- 最少保持的空闲连接数-->
<prototype-count>10</prototype-count>
<!-- 连接池允许的最大连接数-->
<maximum-connection-count>40</maximum-connection-count>
<!-- 连接池开启的最小连接数 -->
<minimum-connection-count>15</minimum-connection-count>
<!-- 一个数据库操作的最长时间15分钟,单位毫秒 -->
<maximum-active-time>900000</maximum-active-time>
<!-- 一个线程的最大寿命-4小时,单位毫秒 -->
<maximum-connection-lifetime>14400000</maximum-connection-lifetime>
<!-- 自动检查连接是否断掉开关 -->
<test-before-use>true</test-before-use>
<!-- 自动检查连接是否断的测试sql语句 -->
<house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql>
</proxool>
</something-else-entirely>


hibernate的配置文件如下:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>

<!-- 配置proxool属性 -->
<!--- 使用proxoolConf.xml中定义的别名 -->
<property name="proxool.pool_alias">cmmb_admin</property>
<!-- 指定使用的proxoolConf文件的位置(这里在SRC下)-->
<property name="proxool.xml">proxoolConf.xml</property>
<property name="connection.provider_class">
org.hibernate.connection.ProxoolConnectionProvider
</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>

<property name="hibernate.jdbc.fetch_size">50</property>
<property name="hibernate.jdbc.batch_size">25</property>
<property name="use_outer_join">false</property>
<property name="use_reflection_optimizer">false</property>
<property name="hibernate.cglib.use_reflection_optimizer">
false
</property>
<property name="jdbc.use_scrollable_resultset">true</property>

<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property>
<property name="connection.is-connection-validation-required">true</property>

<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">auto</property>


<mapping resource="hbm/catalog/GmccAdminArticle.hbm.xml" />
<mapping resource="hbm/catalog/GmccAdminCatalog.hbm.xml" />
........................................


</session-factory>
</hibernate-configuration>


...............期待高手进行解答,谢谢!
...全文
929 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alpha 2010-01-25
  • 打赏
  • 举报
回复
JavaAlpha 2010-01-25
  • 打赏
  • 举报
回复
javax.servlet.ServletException: Servlet execution threw an exceptionINFO - Proxool statistics legend: "s - r  (a/t/o)" > s=served, r=refused (only shown if non-zero), a=active, t=total, o=offline (being tested) 
WARN - 003091 (01/15/00) - #15 registered a statement as closed which wasn't known to be open. This could happen if you close a statement twice.

参考

http://topic.csdn.net/t/20030511/15/1768605.html
alpha 2010-01-25
  • 打赏
  • 举报
回复
crazylaa 2010-01-25
  • 打赏
  • 举报
回复
registered a statement as closed which wasn't known to be open. This could happen if you close a statement twice.
e文不好,我就不翻译了。。。。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧