at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2759)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.j
va:1332)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java
1467)
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java
208)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
        at org.hibernate.loader.Loader.doQuery(Loader.java:697)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(L
ader.java:259)
        at org.hibernate.loader.Loader.doList(Loader.java:2232)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
        at org.hibernate.loader.Loader.list(Loader.java:2124)
        at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.jav
:118)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1597)
        at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
        at com.dao.visitDao.getVisitCount(visitDao.java:21)
        at com.action.showAction.showAllOnHomePage(showAction.java:43)
我们用的是Myeclipse 9.0+MySQL+Tomcat 6.0开发的一个很小的网站,然后主要用的是hibernate和struts2架构,发布到tomcat上去后,10个小时左右服务器就崩溃了,报上面的错误,我们想做一个访问量的功能,然后showAction中调用visitDao中的getVisitCount方法,刚开始10多个小时怎么访问都一点问题没有,然后就会出现上面的问题。我仔细查看过代码,数据库交互方面,session的打开和关闭都没问题,请问有没有遇到过类似的问题啊,求赐教!!谢谢!!项目急用!!

解决方案 »

  1.   

    报错也该有个Exception或者waring开头 吧
      

  2.   

    额 最前面那块我好像忘粘了,现在又不报错误了,估计明天就崩了吧,只好明天再把最前面的错误粘过来了,这是后面的错误 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(Default
    ctionInvocation.java:452)
            at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(Def
    ultActionInvocation.java:291)
            at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultAction
    nvocation.java:254)
            at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInt
    rcept(DefaultWorkflowInterceptor.java:176)
            at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercep
    (MethodFilterInterceptor.java:98)
            at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultAction
    nvocation.java:248),能帮我解决一下吗,都纠结了好长时间了 。。
      

  3.   

    //根据news的id找到相关新闻的信息
    public Newsinfo getNewsByNewsId(int id){
    Session session=HibernateSessionFactory.getSession();
    try {
    session.beginTransaction();
    Criteria criteria=session.createCriteria(Newsinfo.class);
    criteria.add(Restrictions.eq("newsId", id));
    List<Newsinfo> list=criteria.list();
    session.getTransaction().commit();
    if(!list.isEmpty()){
    return list.get(0);
    }else{
    return null;
    }
    } catch (Exception e) {
    e.printStackTrace();
    session.getTransaction().rollback();
    return null;
    } finally{
    HibernateSessionFactory.closeSession();
    }
    }
    这样写有问题吗,我觉得就是这个查询引起的,是连接没有关闭导致一段时间之后Hibernate中的连接池连接的数量已满吗??求解释啊!!
      

  4.   

    at com.dao.visitDao.getVisitCount(visitDao.java:21)
      at com.action.showAction.showAllOnHomePage(showAction.java:43)
    这两个方法和action贴出来
      

  5.   

    action代码太长,我就不粘了,getVisitCount我现在做了一些调整,你看有问题吗?
    public int getVisitCount(){
    Session session=HibernateSessionFactory.getSessionFactory().openSession();
    try {
    Criteria criteria=session.createCriteria(Visitcount.class);
    List<Visitcount> list=criteria.list();
    return list.get(0).getVcount();
    } catch (Exception e) {
    e.printStackTrace();
    return 0;
    } finally{
    HibernateSessionFactory.closeSession(session);
    }
    }
    我这个visitcount表中就一条记录,记录访问量,所以用list.get(0)就能取出访问量的对象了,然后getVcount方法就能得到访问量。求指教!
      

  6.   

    关于mysql,假如通过jdbc建立一个连接,超过8小时没有通过此连接访问mysql,mysql会单方面释放连接,而jdbc不会知道。当使用被mysql单方面释放的连接时,java程序会报异常
      

  7.   

    这样啊,那应该怎么解决呢?怎么判断当前jdbc使用的连接是不是被mysql单方面释放的连接呢?求指导啊!