打开index.jsp页面(先执行action,获取数据),刷新几次就页面就卡住了。
估计是连接没释放,我将连接数调多,就能多连接几次,但始终是治标不治本。
请假一下要怎么做?贴一下主要代码:
index.jsp:
<body>
<s:action name="index" executeResult="false"></s:action>
<UL>
<s:iterator value="#request.list">
<LI>
<A href='#'><s:property value="ETitle" /></A>
</LI>
</s:iterator>
</UL>
</body>action:
public String execute() {
     HttpServletRequest request = ServletActionContext.getRequest();
         List<Essay> list= essay.findEssay(3,4);//参数是列表类型和行数
    request.setAttribute("list", list);
    return null;
    }dao:
public class EssayDAOImpl extends HibernateDaoSupport implements EssayDAO {
public List<Essay> findEssay(int type, int rows) {
        String hql = "from Essay e where e.EType = "+ type +" order by e.ETime desc";
        Query q = this.getSession().createQuery(hql).setFirstResult(0).setMaxResults(rows);
        this.getSession().close();//没有起到作用
        return (List<Essay>)q.list();
    }
}applicationContext.xml连接数(没写这句是页面刷新10次左右就卡了,加上后就20次左右):
<property name="maxActive" value="20"/>所以就算我把连接数改大了,迟早也会卡住了,
新手自学S2SH,这问题应该难不了大大们,请指点一下,谢谢!

解决方案 »

  1.   

    google 之,或许有用:
    http://www.blogjava.net/beansoft/archive/2009/04/14/265504.html
      

  2.   

    问题解决了,我也是找到这种方法:public List queryAll( final String hql, final Object... args) { 
                  List list = getHibernateTemplate().executeFind( new HibernateCallback() { 
                           public Object doInHibernate(Session session) 
                           throws HibernateException, SQLException { 
                          Query query = session.createQuery(hql); 
                           for ( int i =0; i < args. length ; i++) { 
                                 query.setParameter(i, args[i]); 
                          }
                          List list = query.list(); 
                           return list;
                          }
                         });
                  return list;         
           }
      

  3.   

    恩,对,尽量利用库。
    其实你原来代码的那两次getSession得到的不一定是同一个啊,所以你应该用变量来保存这个Session。
    就是说,用
    Session session = getSession();
    try {
    ......
    } finally {
      session.close();
    }