浏览 9820 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-10-29
不定期的出现错误,而且必须重新启动tomcat才可以,各位可知这是为什么呢? 我已经晕了,我曾经所有的功能都走过了,可就是时间稍微一长就出现这种错误,而且没有什么太强规律可以找到。 我个人怀疑这句提示比较重要 Io 异常: Connection reset by peer: socket write error 因为系统中还有我们以前的程序在跑,因为我们以前的程序有机制,当数据库连接出现错误的时候,自动重新连接数据库,(但是我们的连接池肯定和hibernate不公用)会不会是这个破坏了hibernate的连接,目前还不得而知,但是要命的是hibernate 如果死了就彻底死了 出现如下的提示, 2003-10-29 12:46:17 net.sf.hibernate.util.JDBCExceptionReporter logExceptions 警告: SQL Error: 17002, SQLState: null 2003-10-29 12:46:17 net.sf.hibernate.util.JDBCExceptionReporter logExceptions 严重: Io 异常: Connection reset by peer: socket write error 2003-10-29 12:46:17 net.sf.hibernate.util.JDBCExceptionReporter logExceptions 警告: SQL Error: 17002, SQLState: null 2003-10-29 12:46:17 net.sf.hibernate.util.JDBCExceptionReporter logExceptions 严重: Io 异常: Connection reset by peer: socket write error 2003-10-29 12:46:17 net.sf.hibernate.JDBCException <init> 严重: Could not execute query java.sql.SQLException: Io 异常: Connection reset by peer: socket write error at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134); at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179); at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333); at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:389); at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413); at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedState ment.java:119); at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedState ment.java:92); at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleCon nection.java:950); at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection .java:802); at net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.ja va:233); at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.j ava:60); at net.sf.hibernate.loader.Loader.getStatement(Loader.java:528); at net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:566); at net.sf.hibernate.hql.QueryTranslator.iterate(QueryTranslator.java:845 ); at net.sf.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1505); at net.sf.hibernate.impl.QueryImpl.iterate(QueryImpl.java:31); at cn.gov.bez.enterprise.security.entity.ResourceController.getResults(R esourceController.java:46); at cn.com.opendata.util.urlfilter.CheckUrlImpl.dealUrl(CheckUrlImpl.java :25); at cn.com.opendata.util.urlfilter.UrlFilterServlet.doFilter(UrlFilterSer vlet.java:27); at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:213); at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:193); at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:256); at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex t.invokeNext(StandardPipeline.java:643); at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:480); at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995); at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV alve.java:191); at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex t.invokeNext(StandardPipeline.java:643); at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:480); at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995); at org.apache.catalina.core.StandardContext.invoke(StandardContext.java: 2415); at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j ava:180); at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex t.invokeNext(StandardPipeline.java:643); at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche rValve.java:171); at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex t.invokeNext(StandardPipeline.java:641); at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j ava:172); at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex t.invokeNext(StandardPipeline.java:641); at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:480); at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995); at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal ve.java:174); at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex t.invokeNext(StandardPipeline.java:643); at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:480); at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995); at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22 3); at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java :594); at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce ssConnection(Http11Protocol.java:392); at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java :565); at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP ool.java:619); at java.lang.Thread.run(Thread.java:536); hibernate.property 一些相关的信息我注释了,应该不影响吧:) ## Oracle hibernate.dialect net.sf.hibernate.dialect.Oracle9Dialect hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver hibernate.connection.username *** hibernate.connection.password *** hibernate.connection.url *** ################################### ### Apache DBCP Connection Pool ### ################################### # connection pool hibernate.dbcp.maxActive 100 hibernate.dbcp.whenExhaustedAction 1 hibernate.dbcp.maxWait 120000 hibernate.dbcp.maxIdle 10 ## prepared statement cache hibernate.dbcp.ps.maxActive 100 hibernate.dbcp.ps.whenExhaustedAction 1 hibernate.dbcp.ps.maxWait 120000 hibernate.dbcp.ps.maxIdle 100 # optional query to validate pooled connections: hibernate.dbcp.validationQuery select 1 from dual 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-10-29
你把问题描述清楚一点,看一下《论坛提问的智慧》第四条。
另外给一些建议: 1、用ojdbc14.jar 2、采用Hibernate自带的DBCP,不使用Tomcat的DBCP |
|
返回顶楼 | |
发表时间:2003-10-29
唉,还是不行:(
你看看还需要我描述什么? 所有功能运行都是可以的,就是时间一长(连半天都不到)就死掉了 我用了ojdbc14.jar hibernate.property 也改了 ,难道要我改hibernate 的实现:( |
|
返回顶楼 | |
发表时间:2003-10-29
你的有时是指运行当中忽然出现吗?查看你的pool连接池的日志,是不是有网临时中断的情况。建议使用tomcat的dbcp连接池,采用jndi方式获得数据库连接。如果使用配置文件中的dbcp,最好增加一些属性。
自动恢复的问题,我没有发现dbcp能自动回复:(,如果你自己的连接池可以的化,应该可以扩展,使hibernate采用你的连接池:lol: |
|
返回顶楼 | |
发表时间:2003-10-29
这个错误我也遇到过一次,情况是这样的,在自己的机器上使用Oracle8.1.7和WLS7.0,使用WLS的数据库连接池.
由于是在自己的电脑上安装,所以为了节省资源,把Oracle和SGA参数和WLS的JVM都调的很小。然后用Hibernate进行了负载比较重的并发查询,导致WLS的数据库连接池崩溃。错误代码和你上面的一样。 之后就没有做更详细的测试,因为我这个情况的出现主要还是WLS本身和Oracle本身我把参数调太小了,而Hibernate我又用ab并发了很高的数量去请求访问,出现连接池崩溃,也不算意外。 你的错误我判断不出原因,因为你没有提供足够的信息,例如你的Oracle的SGA参数配置,数据库的负载情况和IO情况,SGA使用状况,Tomcat的JVM 状况,DBCP连接池的log等等。。。 |
|
返回顶楼 | |
发表时间:2003-10-29
换成其他的connection pool试试看。
如果必须要用dbcp 那么设置这个试试看: hibernate.dbcp.testOnBorrow true hibernate.dbcp.testOnReturn true good luck |
|
返回顶楼 | |
发表时间:2003-10-31
多些各位,问题找到了,我在一个权限认证的地方没有close session:(,一直没有找到,又是最经常用到的,结果最终把hibernate给拖死了
|
|
返回顶楼 | |