<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)

    隨筆分類

    隨筆檔案

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 香蕉高清免费永久在线视频| 免费永久看黄在线观看app| 亚洲熟妇丰满多毛XXXX| 免费激情网站国产高清第一页 | 国产精品福利片免费看| 国产免费无遮挡精品视频| 亚洲AV日韩综合一区| 国产精品公开免费视频| 国产精品亚洲а∨无码播放不卡| 天天拍拍天天爽免费视频| 亚洲精品精华液一区二区| 国产精品免费电影| 黄页网址大全免费观看12网站 | 亚洲国产午夜福利在线播放| 边摸边吃奶边做爽免费视频网站| 亚洲国产人成精品| 国产免费黄色无码视频| 久久亚洲国产中v天仙www| 99热这里只有精品免费播放| 亚洲大香人伊一本线| 福利免费观看午夜体检区| 亚洲人成电影网站免费| 免费成人黄色大片| 在线免费观看h片| 亚洲成AV人片天堂网无码| 国产免费牲交视频免费播放| 国产亚洲精品一品区99热| 国产精品永久免费10000| 亚洲国产高清在线精品一区| 在线观看免费亚洲| 免费看一区二区三区四区| 亚洲最新中文字幕| yy6080久久亚洲精品| 久久这里只精品国产免费10| 国产成人精品日本亚洲网址| 亚洲人成无码网WWW| 91视频免费网址| 精品国产日韩亚洲一区在线| 亚洲AV日韩精品久久久久久久| 成年人免费视频观看| 久久久WWW成人免费精品|