• 循环调用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()不在事务范围之内。
  • 相关阅读:
    nginx 日志之 error_log
    ssl 原理简介
    nginx 配置ssl
    自建 ca 及使用 ca 颁发证书
    nginx 访问控制之 认证
    nginx 访问控制之 限速
    nginx 访问控制之 http_referer
    nginx 访问控制之 user_agent
    nginx 访问控制之 request_uri
    nginx 访问控制之 document_uri
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4227561.html
Copyright © 2020-2023  润新知