tomcat6.0 + sql2000刚开始运行没有报错,运行一段时间后,就报下面的错误
重启tomcat后,又可以正确运行一段时间
请问要怎么解决呀?错误提示:
[ERROR][2009-09-07 09:48:37, 1252288117109][Microsoft][SQLServer 2000 Driver for JDBC]Connection reset by peer: socket write error
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.submitRequest(Unknown Source)
com.microsoft.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
com.util.DBjdbc.querySQL(DBjdbc.java:74)
com.service.StudyService.turnm(StudyService.java:54)
com.servlet.StudyServlet.doGet(StudyServlet.java:51)
com.servlet.StudyServlet.doPost(StudyServlet.java:162)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
com.filter.SetEncodingFilter.doFilter(SetEncodingFilter.java:23)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
java.lang.Thread.run(Unknown Source)

解决方案 »

  1.   

    [ERROR][2009-09-07 09:48:37, 1252288117109][Microsoft][SQLServer 2000 Driver for JDBC]Connection reset by peer: socket write error 
    线程错误
      

  2.   


    tomcat是要定时重启的,每隔8小时会重启一次
    但是,现在是用不到半个时候就报错了
      

  3.   

    我在每一个
    RseultSet rs = DBjdbc.querySql(sql);
       ...
    DBjdbc.close();
    但是,这样的话,有些地方又会提示object has close
      

  4.   

    经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
    ①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
    ②:客户关掉了浏览器,而服务器还在给客户端发送数据;
    ③:浏览器端按了Stop
      

  5.   

    你用 sql事件查看器,跟踪一下 数据库连接情况。
      

  6.   

    呵呵。。我找到原因了
    原因就是:servlet写了多次结果,而client只读取了一次结果,其他没有获取,所以servlet就会报这样的错误。
    我页面上是这样子写的
    <table>
      <tr>
       <td onclick="aa()">
         <a href="javascript:aa()"> 查询 </a>
       </td>
      </tr>
    </table>
    所以有的时候调用了两次aa(),写了两次结果,呵呵