利用监听器减少创建连接的时间

首先,监听器实际就是一个实现特定接口的java程序,这个java程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件时,监听器某个方法会立即执行
重写监听器的初始化和销毁方法,可以用来实现减少创建连接的时间

@WebListener
public class OneListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //Tomcat启动时,预先创建20个connection,
        //在userDao.add方法执行时将创建好的connection交给add方法
        JdbcUtil util = new JdbcUtil();
        Map map=new HashMap();
        for (int i=1;i<=20;i++){
            Connection con = util.getCon();
            System.out.println("在Http服务器启动时,创建Connection"+con);
            map.put(con,true);//true表示通道处于空闲,false表示通道正在被使用
        }
        //为了在Http服务器运行期间,一直都可以使用20个Connection
        //将connection放到全局作用域对象中
        ServletContext application = servletContextEvent.getServletContext();
        application.setAttribute("key1",map);

    }//map被销毁

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        //Http服务器关闭时刻将全局作用域对象20个Connection销毁
        ServletContext application = servletContextEvent.getServletContext();
        Map map =(Map) application.getAttribute("key1");
        Iterator it = map.keySet().iterator();
        while (it.hasNext()) {
            Connection con = (Connection) it.next();
            if(con!=null){
                System.out.println(con+"被销毁");
            }

        }
    }
}
posted @ 2021-01-13 17:24  向着秃头出发  阅读(83)  评论(0)    收藏  举报