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

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

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

    內(nèi)蒙古java團(tuán)隊(duì)

    j2se,j2ee開發(fā)組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    連接池最基本的目的:?
    1、重用連接,節(jié)省連接資源;?
    2、免去建立連接操作,提高效率
    3.?限制最大連接并發(fā)數(shù)


    自己弄的一個(gè)連接池,絕對高效安全,支持多數(shù)據(jù)源


    連接池的兩種實(shí)現(xiàn)方式:

    1.?修飾模式弄個(gè)ConnectionWrapper類出來?
    2.?動(dòng)態(tài)代理


    這里采用的是第一種方式



    ConnectionAdapter??implements?Connetion
    ConnectionWrapper?extends?ConnectionAdapter?

    ConnectionWrapper?中封裝了connection對象
    close方法重寫為
    {
    ?SimpleConnectionPool.putConnectionToPool(this);
    ?//把連接返回連接池
    }


    配置文件?app.properties


    ConnectionAdapter?從DBCP拷貝過來,刪了些垃圾東西

    支持多數(shù)據(jù)源

    DBUtil.getConn();//獲取默認(rèn)連接池
    DBUtil.getConn(pool_name);//獲取指定名稱的連接池



    各參數(shù)說明

    pool_name.dirver

    driver=net.sourceforge.jtds.jdbc.Driver
    url=jdbc:jtds:sqlserver://127.0.0.1:1433/data
    user=sa
    pwd=sa
    type=sqlserver?//數(shù)據(jù)庫類型
    pool=1????????//是否使用連接池?1?使用
    max_wait=3????//連接池已滿時(shí),最大等待時(shí)間?,單位?s
    #timeout?,wait?time?when?max?active?,??unit?s
    max_active=20??//最大活動(dòng)連接數(shù),用這個(gè)來控制最大并發(fā)數(shù)
    min_free=3?????//連接池中最小空閑連接數(shù)
    max_free=20????//連接池中最大空閑連接數(shù),默認(rèn)=max_active
    check_sql=select?getdate()??//驗(yàn)證連接是否有效,
    clear_time=2????????????????//清理空閑連接
    #clear_time,remove?the?old?connection,unit?min




    還可以用動(dòng)態(tài)代理的方式實(shí)現(xiàn)連接池


    2.

    動(dòng)態(tài)代理實(shí)現(xiàn)



    class?ConnectionWrapper?implements?InvocationHandler?{

    private?final?static?String?CLOSE_METHOD_NAME?=?"close";
    ??public?Connection?connection?=?null;
    ??private?Connection?m_originConnection?=?null;

    ?ConnectionWrapper(Connection?con,String?pool_name)throws?Exception?{
    ????this.pool_name=pool_name;
    ????
    ????this.check_sql?=?getCheckSqlByPoolName(pool_name);
    ????
    ????last_use_time?=?System.currentTimeMillis();
    ????create?=?StringUtil.getNowTime()+"";
    ????
    ??????Class[]?interfaces?=?{java.sql.Connection.class};
    ????this.connection?=?(Connection)?Proxy.newProxyInstance(
    ??????con.getClass().getClassLoader(),
    ??????interfaces,?this);
    ????m_originConnection?=?con;
    ??}

    ??
    ??void?close()?{
    ????//m_originConnection.close();
    ??????DBUtil.close(m_originConnection);
    ??}

    ??public?Object?invoke(Object?proxy,?Method?m,?Object[]?args)?throws?Throwable?{
    ????Object?obj?=?null;
    ????if?(CLOSE_METHOD_NAME.equals(m.getName()))?{
    ????????//SimpleConnectionPool.pushConnectionBackToPool(this);
    ????????SimpleConnectionPool.putConnectionToPool(this);
    ????????
    ????}
    ????else?{
    ????????
    ??????obj?=?m.invoke(m_originConnection,?args);
    ??????//last_use_time?=?System.currentTimeMillis();
    ????}
    ??
    ????
    ????return?obj;
    ??}
    ??

    }


    ??????????????代碼不全,只提供連接池部分代碼,學(xué)習(xí)交流用
    主站蜘蛛池模板: 亚洲免费日韩无码系列| 色屁屁www影院免费观看视频| 久久免费99精品国产自在现线| 亚洲av无码专区在线观看素人| 免费高清A级毛片在线播放| 免费va在线观看| 最好2018中文免费视频| 亚洲精品一级无码鲁丝片 | 久久99精品国产免费观看| 中文字幕亚洲不卡在线亚瑟| 国产V片在线播放免费无码| 亚洲午夜久久久久久噜噜噜| 成人爽a毛片免费| 91亚洲va在线天线va天堂va国产| 足恋玩丝袜脚视频免费网站| 久久亚洲精品无码aⅴ大香| 无码区日韩特区永久免费系列| 曰批全过程免费视频在线观看无码| 在线观看午夜亚洲一区| 国产一区二区三区免费| 亚洲国产美女视频| 国外成人免费高清激情视频 | 亚洲三级中文字幕| 免费人成在线观看播放国产| 久久不见久久见免费影院www日本| 亚洲AV无码专区国产乱码4SE| 最近中文字幕大全免费视频| 亚洲午夜福利在线视频| 亚洲成人国产精品| 免费看男人j放进女人j免费看| 亚洲人成综合在线播放| 亚洲av午夜成人片精品电影| 国产一级淫片a免费播放口| 狠狠色香婷婷久久亚洲精品| 免费一级特黄特色大片在线观看| 在线免费观看h片| 亚洲日韩av无码中文| 亚洲一区二区三区香蕉| 无人在线观看完整免费版视频| 一级毛片aaaaaa视频免费看| 亚洲福利电影一区二区?|