자바 코드 구현 Druid 링크 풀 로 데이터베이스 링크 가 져 오기

6934 단어 자바
원래 사용 하 던 c3p 0 링크 풀 때문에 자주 나타 납 니 다:APPARENT DEADLOCK!!!Creating emergency threads for unassigned pending tasks,스 레 드 잠 금 이 발생 한 경우 서버 를 자주 재 부팅 해 야 하 는 등 골 치 아 픕 니 다.그래서 기 존의 c3p 0 대신 Druid 링크 풀 을 사용 하 는 것 을 고려 합 니 다.
Alibaba Druid 중국어 문서
package db.conn;

import java.sql.Connection;
//         
import config.Config;

import com.alibaba.druid.pool.DruidDataSource;

/**
 *         ,           
 *                     
 *                    
 * @author yuyu
 *
 */

public class DbConnect {    

private static DruidDataSource dataSourceMDB=null;
private static DruidDataSource dataSourceSSO=null;

public String db;

    /**
     *                     
     * @throws Exception 
     */
    public DbConnect(){

    }

    public void GetDbConnectSSO() throws Exception  {
        try{

            if(dataSourceSSO==null){

                dataSourceSSO=new DruidDataSource();

                //      
                dataSourceSSO.setUrl(Config.DBURL);
                dataSourceSSO.setDriverClassName(Config.DBDRIVER);
                dataSourceSSO.setUsername(Config.DBUSER);
                dataSourceSSO.setPassword(Config.DBPASSWORLD);
                //       、  、  
                dataSourceSSO.setInitialSize(1);
                dataSourceSSO.setMinIdle(1);
                dataSourceSSO.setMaxActive(20);
                //      
                dataSourceSSO.setRemoveAbandoned(true);
                dataSourceSSO.setRemoveAbandonedTimeout(30);
                //             
                dataSourceSSO.setMaxWait(20000);
                //             ,           ,     
                dataSourceSSO.setTimeBetweenEvictionRunsMillis(20000);
                //    
                dataSourceSSO.setValidationQuery("SELECT 'x'");
                dataSourceSSO.setTestWhileIdle(true);
                dataSourceSSO.setTestOnBorrow(true);    

            }

        }catch(Exception e){

            throw e;

        }

    }
    public void GetDbConnectMDB() throws Exception {
        try{

            if(dataSourceMDB==null){

                dataSourceMDB=new DruidDataSource();                

                //      
                dataSourceMDB.setUrl(Config.MDB_DBURL);
                dataSourceMDB.setDriverClassName(Config.DBDRIVER);
                dataSourceMDB.setUsername(Config.MDB_DBUSER);
                dataSourceMDB.setPassword(Config.MDB_DBPASSWORLD);
                //       、  、  
                dataSourceMDB.setInitialSize(1);
                dataSourceMDB.setMinIdle(1);
                dataSourceMDB.setMaxActive(20);
                //      
                dataSourceMDB.setRemoveAbandoned(true);
                dataSourceMDB.setRemoveAbandonedTimeout(30);
                //             
                dataSourceMDB.setMaxWait(20000);
                //             ,           ,     
                dataSourceMDB.setTimeBetweenEvictionRunsMillis(20000);
                //    
                dataSourceMDB.setValidationQuery("SELECT 'x'");
                dataSourceMDB.setTestWhileIdle(true);
                dataSourceMDB.setTestOnBorrow(true);

            }

        }catch(Exception e){

            throw e;

        }

    }
    /**
     *               
     * @return          
     * @throws Exception 
     */
    public Connection getConnect(String str) throws Exception{

        Connection con=null;
        this.db=str;

        try {

            if(db.equals("MDB")){
                GetDbConnectMDB();
                con=dataSourceMDB.getConnection();

            }else if(db.equals("SSO")){
                GetDbConnectSSO();
                con=dataSourceSSO.getConnection();  

            }
        } catch (Exception e) {

            throw e;

        }
        return con;     

    }

}

좋은 웹페이지 즐겨찾기