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中人工释放

    下载

  • 相关阅读:
    Linux实现ftp账号同时访问两个目录方法
    ubuntu系统中的VMware 安装win7 Ghost镜像的几个坑
    ubuntu14.04LTS安装vmware10.0.1
    翻页特效
    使用Fragment应用放置后台很久,被系统回收,出现crash
    Android软件安全开发实践(下)
    移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)
    数字签名与数字加密
    time_wait 原理分析和优化
    Go中http超时问题的排查
  • 原文地址:https://www.cnblogs.com/wdfrog/p/3142367.html
Copyright © 2011-2022 走看看