<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java天空

     

    commons DBCP 配置參數簡要說明

      前段時間因為項目原因,要在修改數據庫連接池到DBCP上,折騰了半天,有一點收獲,不敢藏私,特在這里與朋友們共享。
      在配置時,主要難以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait這四個參數,設置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的時候,系統會進行無效的Connection的回收,回收的Connection為removeAbandonedTimeout(默認300秒)中設置的秒數后沒有使用的Connection,激活回收機制好像是getNumActive()=getMaxActive()-2。 :) 有點忘了。
      logAbandoned=true的話,將會在回收事件后,在log中打印出回收Connection的錯誤信息,包括在哪個地方用了Connection卻忘記關閉了,在調試的時候很有用。
      在這里私人建議maxWait的時間不要設得太長,maxWait如果設置太長那么客戶端會等待很久才激發回收事件。
      以下是我的配置的properties文件:
    #連接設置
    jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
    jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVER
    jdbc.username=user
    jdbc.password=pass

    #<!-- 初始化連接 -->
    dataSource.initialSize=10

    #<!-- 最大空閑連接 -->
    dataSource.maxIdle=20

    #<!-- 最小空閑連接 -->
    dataSource.minIdle=5

    #最大連接數量
    dataSource.maxActive=50

    #是否在自動回收超時連接的時候打印連接的超時錯誤
    dataSource.logAbandoned=true

    #是否自動回收超時連接
    dataSource.removeAbandoned=true

    #超時時間(以秒數為單位)
    dataSource.removeAbandonedTimeout=180

    #<!-- 超時等待時間以毫秒為單位 6000毫秒/1000等于60秒 -->
    dataSource.maxWait=1000

      以下是我在連接控制中調用的方法:

    ??????? Properties? dbProps=null;
      //下面的讀取配置文件可以根據實際的不同修改
    ??????? dbProps = ConfigProperties.getInstance().getProperties("jdbc.properties");
    ??????? try {
    ??????? ?String driveClassName = dbProps.getProperty("jdbc.driverClassName");
    ??????? ?String url = dbProps.getProperty("jdbc.url");
    ??????? ?String username = dbProps.getProperty("jdbc.username");
    ??????? ?String password = dbProps.getProperty("jdbc.password");
    ??????? ?
    ??????? ?String initialSize = dbProps.getProperty("dataSource.initialSize");
    ??????? ?String minIdle = dbProps.getProperty("dataSource.minIdle");
    ??????? ?String maxIdle = dbProps.getProperty("dataSource.maxIdle");
    ??????? ?String maxWait = dbProps.getProperty("dataSource.maxWait");
    ??????? ?String maxActive = dbProps.getProperty("dataSource.maxActive");
    ????????? ?//是否在自動回收超時連接的時候打印連接的超時錯誤
    ?????? ? ?boolean logAbandoned = (Boolean.valueOf(dbProps.getProperty("dataSource.logAbandoned","false"))).booleanValue();

    ?????? ? ?//是否自動回收超時連接
    ?????? ? ?boolean removeAbandoned = (Boolean.valueOf(dbProps.getProperty("dataSource.removeAbandoned","false"))).booleanValue();

    ?????? ? ?//超時時間(以秒數為單位)
    ?????? ? ?int removeAbandonedTimeout = Integer.parseInt(dbProps.getProperty("dataSource.removeAbandonedTimeout","300"));
    ?????? ?
    ??????? ?dataSource = new BasicDataSource();
    ??????? ?dataSource.setDriverClassName(driveClassName);
    ??????? ?dataSource.setUrl(url);
    ??????? ?dataSource.setUsername(username);
    ??????? ?dataSource.setPassword(password);

    ??????? ?//初始化連接數
    ??????? ?if(initialSize!=null)
    ??????? ??dataSource.setInitialSize(Integer.parseInt(initialSize));
    ??????? ?
    ??????? ?//最小空閑連接
    ??????? ?if(minIdle!=null)
    ??????? ??dataSource.setMinIdle(Integer.parseInt(minIdle));

    ??????? ?//最大空閑連接
    ??????? ?if(maxIdle!=null)
    ??????? ??dataSource.setMaxIdle(Integer.parseInt(maxIdle));
    ??????? ?
    ??????? ?//超時回收時間(以毫秒為單位)
    ??????? ?if(maxWait!=null)
    ??????? ??dataSource.setMaxWait(Long.parseLong(maxWait));
    ??????? ?
    ??????? ?//最大連接數
    ??????? ?if(maxActive!=null){
    ??????? ??if(!maxActive.trim().equals("0"))
    ??????? ???dataSource.setMaxActive(Integer.parseInt(maxActive));
    ??????? ?}

    ??????? ?System.out.println("logAbandoned="+logAbandoned);
    ?????????? ?dataSource.setLogAbandoned(logAbandoned);
    ??????? ?dataSource.setRemoveAbandoned(removeAbandoned);
    ??????? ?dataSource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
    ??????? ?
    ??????? ?Connection conn = dataSource.getConnection();
    ??????? ?if(conn==null){
    ??????? ??log("創建連接池時,無法取得連接!檢查設置!!!");
    ??????? ?}else{
    ??????? ??conn.close();
    ??????? ?}
    ?????????System.out.println("連接池創建成功!!!");
    ??????? }
    ??????? catch (Exception e) {
    ??????? ?e.printStackTrace();
    ??????????? System.out.println("創建連接池失敗!請檢查設置!!!");
    ??????? }

      有使用問題或建議可與我聯系:yy-man@163.com
    ??????
    ?????????2006-04-20?? By: 小土

    posted on 2006-04-20 11:49 YY 閱讀(3815) 評論(1)  編輯  收藏

    評論

    # re: commons DBCP 配置參數簡要說明 2008-05-29 14:31 ;l;

    ;l;oop
      回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲一区二区三区香蕉| 野花视频在线官网免费1| 精品熟女少妇aⅴ免费久久| 日韩成人免费在线| 国产精品久久亚洲不卡动漫| 久久久久久久99精品免费观看| 中文字幕一精品亚洲无线一区| a级毛片免费网站| 成人亚洲性情网站WWW在线观看| 一区二区三区免费在线视频| 亚洲国产成人久久一区久久| 一级特黄录像视频免费| 国产亚洲日韩一区二区三区| 国产一区二区三区免费观看在线| 亚洲国产精品成人久久| 日木av无码专区亚洲av毛片| 一级毛片aa高清免费观看| 四虎永久成人免费影院域名| japanese色国产在线看免费| 国产成人无码综合亚洲日韩| 久操免费在线观看| 精品亚洲成在人线AV无码| 国产精品免费看久久久久| 一级中文字幕乱码免费| 久久久久亚洲精品影视| 在线v片免费观看视频| 亚洲av中文无码字幕色不卡| 久久影视综合亚洲| 免费人成视频在线观看网站| 国产成人精品日本亚洲专一区| 国产免费黄色大片| 波多野结衣免费一区视频| 亚洲美女色在线欧洲美女| 在线免费视频一区二区| 国产免费福利体检区久久| 亚洲美女大bbbbbbbbb| 日本免费一区尤物| 久草免费福利资源站| 亚洲欧美日韩一区二区三区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 国产一区二区免费视频|