<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.?動態(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??//最大活動連接數(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




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


    2.

    動態(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í)交流用
    主站蜘蛛池模板: 全免费a级毛片免费看无码| 男女一边桶一边摸一边脱视频免费 | 日韩在线免费视频| 久久久久亚洲精品成人网小说| 一级毛片aa高清免费观看| 青春禁区视频在线观看直播免费| 亚洲精品一区二区三区四区乱码| 2015日韩永久免费视频播放| 久久久久亚洲精品成人网小说| 三上悠亚电影全集免费| 国产亚洲人成网站在线观看不卡| A级毛片高清免费视频在线播放| 激情综合色五月丁香六月亚洲| 精品人妻系列无码人妻免费视频| jjzz亚洲亚洲女人| 久久精品无码免费不卡| 亚洲成A人片在线观看WWW| 日韩免费无码视频一区二区三区| 亚洲韩国在线一卡二卡| 两性刺激生活片免费视频| 亚洲日本va一区二区三区| 亚洲成A∨人片天堂网无码| 东北美女野外bbwbbw免费| 亚洲国产一区二区三区青草影视| 2021国产精品成人免费视频| 亚洲人成小说网站色| 国产精品久免费的黄网站| rh男男车车的车车免费网站| 亚洲爆乳无码专区| 成人午夜性A级毛片免费| 美女视频黄a视频全免费网站一区| 亚洲日韩中文在线精品第一| 一级毛片全部免费播放| 亚洲欧美成aⅴ人在线观看| 亚洲人成影院在线观看| 少妇太爽了在线观看免费视频| 亚洲午夜无码久久| 亚洲日韩中文无码久久| 青青在线久青草免费观看| 一级毛片在线免费视频| 亚洲精品乱码久久久久久下载|