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

    下载

  • 相关阅读:
    类型反射出错
    洛阳亲友如相问 咱两还要喝一壶
    为什ipad3卖的不好呢?(爆笑)
    位置相关属性offset(),position(),scrollTop()等
    httpModules 与httpHandler
    IE7,IE8不支持New Date的解决方法
    数据库中字符长度和C#代码中字符长度
    让你的wordpress支持Window live writer
    用Windows Live Writer离线写Wordpress博客详解
    请问在数据库中怎样用模糊查询查找含有通配符的项,比如 like ' ' 我要查找含有“%”的项,怎么查?
  • 原文地址:https://www.cnblogs.com/wdfrog/p/3142367.html
Copyright © 2011-2022 走看看