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

    下载

  • 相关阅读:
    eclipse web项目没有run on server
    npm install 包 失败解决方法
    svn already lock解决方法
    查看centos的版本
    SmartGit 授权Non-Commerical
    http://jingyan.baidu.com/article/dca1fa6fa07000f1a44052f6.html
    http://zhidao.baidu.com/link?url=3tJ_i5gyYLrd7rFPk0eRYre_oxjCZvTOMOutp89LGhUgi6Ic6Ncama_GMAHnwfF73SVYGqy364vDfv6AY4ERPa
    http://www.oschina.net/code/snippet_12_13918
    http://www.360doc.com/content/12/0516/14/1671317_211422841.shtml
    https://v2ex.com/t/170386
  • 原文地址:https://www.cnblogs.com/wdfrog/p/3142367.html
Copyright © 2011-2022 走看看