zoukankan      html  css  js  c++  java
  • 循环调用spring的dao,数个过后无响应

        最近遇到这么一个问题:前台按钮发送AJax请求到后台,后台是SSH框架。每点击一下按钮就发送一次请求。 点击数次(7次)过后,页面无ajax响应。 在排除前台因素之后,找 
    到后台代码。写一个Test类。 
    public static void main(String[] args) { 

    ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); 
        TestDao testDao = (TestDao)context.getBean("testDaoImpl"); 
            for (int i = 0; i < 10; i++) { 
            TestDao testdao = (TestDao)context.getBean("testDaoImpl"); 
            List<Test> test = testdao.getTestsByVehicleType(1); 
            System.out.println(i); 
       } 
    控制台输出到7也停止了。 
         网上也有个别帖子求助说"spring 调用bean次数的问题"。 
        其实罪魁祸首是在DAO注入sessionFactory后,在DAO方法里面sessionFactory.openSession() 。 
         虽然spring声明式的事务会自动帮你commit,但是openSession()产生的session并不会由于commit而自动关闭,而你多次打开新的session,结果session过多造成这个假死的现象。 
         我的解决办法是DAO方法里改为sessionFactory.getCurrentSession()。该方法产生的session会在commit的时候自动close()这点我们在hibernate的时候已经学过了;或者使用HibernateTemplate的方法。 
         不过在假如不是在B/S的情况下,即在Main测试getCurrentSession()是不成功的。 因为SessionFactory是注入进来的,getCurrentSession()不在事务范围之内。
  • 相关阅读:
    叶树:任总喊你回家吃饭 (zz)
    一个小员工如何让一家大银行一夕倒闭(附几则)
    精妙SQL语句收集
    降温了 降温了
    東京タワー初めてphoto
    圣诞气氛photo
    初冬071110photo
    超级郁闷的一天
    eveningplan
    KOF怀念ING
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4227561.html
Copyright © 2011-2022 走看看