zoukankan      html  css  js  c++  java
  • dbcp的销毁

    使用commons-dbcp-1.2.2.jar的DataSource,发现每次动态编译后连接池中的连接不会释放,新的连接池建立有mssql多出一组连接,只有重新启动tomcat或weblogic才可以释放。

    package aaplan.dbutil;
    
    import java.io.InputStream;
    import java.util.Properties;
    
    import java.sql.*;
    
    import javax.sql.DataSource;
    
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    
    public class JdbcUtil {
    
        private static  DataSource dataSource=null;
        /**
         * @param args
         */
    
        public static Connection getConnection() throws SQLException {
            return dataSource.getConnection();
        }
        public  static DataSource getDataSource() {
            return dataSource;
        }
        public static void  release()  {
            if(dataSource !=null){
                try {
                    ((org.apache.commons.dbcp.BasicDataSource)dataSource).close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
            }
        }
        static{
            try{
            Properties properties=new Properties();
            InputStream inputStream= JdbcUtil.class.getClassLoader().getResourceAsStream("dbcp.properties");
            properties.load(inputStream);
            inputStream.close();
            dataSource =BasicDataSourceFactory.createDataSource(properties);
    
            
            System.out.println(dataSource);
            }catch(Exception e){
              e.printStackTrace();
              throw new RuntimeException("JdbcUtil Init Error!");    
            
            }
            
        }
    
    }
    View Code
    package aaplan.dbutil;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    /**
     * Application Lifecycle Listener implementation class DataSorceMgrListener
     *
     */
    public class DataSorceMgrListener implements ServletContextListener {
    
        /**
         * Default constructor. 
         */
        public DataSorceMgrListener() {
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see ServletContextListener#contextInitialized(ServletContextEvent)
         */
        public void contextInitialized(ServletContextEvent arg0) {
            // TODO Auto-generated method stub
            System.out.println("Init context!");
            JdbcUtil.getDataSource();
        }
    
        /**
         * @see ServletContextListener#contextDestroyed(ServletContextEvent)
         */
        public void contextDestroyed(ServletContextEvent arg0) {
            System.out.println("Destoryed Context!");
            JdbcUtil.release();
        }
        
    }
    View Code

    解决,写了个ServerContextListener,在里面的Destroyed中人工释放

    下载

  • 相关阅读:
    [bzoj3771]Triple——生成函数+容斥原理+FFT
    [bzoj3456]城市规划——分治FFT
    [uoj207]共价大爷游长沙——lct
    [bzoj2159]Crash 的文明世界——动态规划
    [luogu4707]重返现世——min-max容斥拓展+动态规划
    [bzoj4543][POI2014]Hotel加强版——长链剖分
    [bzoj1758][Wc2010]重建计划——长链剖分+线段树+分数规划
    [vijos]lxhgww的奇思妙想——长链剖分模板
    [bzoj3198][Sdoi2013]spring——容斥+哈希表
    AngularJs练习Demo15自定义服务
  • 原文地址:https://www.cnblogs.com/wdfrog/p/3142367.html
Copyright © 2011-2022 走看看