用户登录系统时,有时会出现不能登录的情况.
异常信息:
[ERROR] 2009-07-11 07:34:01,203 method:org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:340)
Application exception overridden by rollback exception
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:811)
at services.sys_user.SysUserServices.doFindByUser(SysUserServices.java:156)
at services.sys_user.SysUserServices$$FastClassByCGLIB$$10a1235.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at services.sys_user.SysUserServices$$EnhancerByCGLIB$$556dc332.doFindByUser(<generated>)
at business.sys_user.SysUserBusiness.doLogin(SysUserBusiness.java:131)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at core.base.server.ActionControl.process(ActionControl.java:37)
at servlet.LoginServlet.process(LoginServlet.java:82)
at servlet.LoginServlet.doPost(LoginServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
Caused by: 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:334)
at oracle.jdbc.driver.OracleStatement.open(OracleStatement.java:562)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2786)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:608)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:536)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
... 51 more出现异常代码:
 154: String hql = "from SysUser su where su.LOGIN_NAME=:loginName and su.STATUS='1'";
 155: SysUser su = (SysUser) sysUserDao.getQuery(hql).setString("loginName",
 156: user.getLOGIN_NAME()).uniqueResult();

解决方案 »

  1.   

    Caused by: java.sql.SQLException: Io 异常: Connection reset by peer: socket write error ---------------------------------------------------------------------------------------
    连接池配置自检时间。
      

  2.   

    换一句sql试试。估计sql有问题吧
      

  3.   

    估计和网络连接质量有关,影响使用么?Connection reset by peer: socket write error 类似这样的错误,都可以在数据库连接配置添加相关的配置参数解决,一般是由于客户端和服务器断开导致的,而不是服务端的问题不知道你的连接池配置,可能就是类似ignore-client-disconnect 这样的配置
      

  4.   

    你好,把tomcat服务器重启后,又可以登录了
      

  5.   

    问题补充:
    系统发布以后,出现了一个奇怪的现象,待机一晚上后,第二天早上第一次登录总是失败。重启Tomcat 服务器后,虽然当天可以正常使用,但是到第二天问题依旧。 
      

  6.   

    发送数据之后flush一下就可以解决问题.
    如果还不行,就把你执行数据库的详细操作的代码贴出来.
      

  7.   

    是调用session.flush();刚才说错了
      

  8.   


    谢谢,已经用session.flush了
      

  9.   

        估计是在待机过程中,数据库被关闭了,然后又重启.因为hibernate没有自动刷新的功能,所以再查询数据的话,会出现连接不上的问题.
        想配一个c3p0的连接池,但发现改的代码很多,而且系统差不多就上线了,不敢冒险.只能以后不断的测试了.
        谢谢各位的回复!