走自己的路

          路漫漫其修遠(yuǎn)兮,吾將上下而求索

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            50 隨筆 :: 4 文章 :: 118 評(píng)論 :: 0 Trackbacks
           

          我們需要使用Connection Pool的情況都通常都是指網(wǎng)絡(luò)連接,比如:DB connection SocketConnection,這些對(duì)象往往需要使用Pool來管理,因?yàn)檫@些對(duì)象的重復(fù)創(chuàng)建需要較長(zhǎng)的時(shí)間,是系統(tǒng)性能的瓶頸。

          Connection Pool實(shí)現(xiàn)包括兩類:第一種是受管的Connection Pool,需要實(shí)現(xiàn)JCAResource Adapter規(guī)范,通過JNDI lookup出來ConnectionPool對(duì)象,然后調(diào)用受管ConnectionPool對(duì)象的getConnection方法獲得connection第二種是自己實(shí)現(xiàn)一個(gè)ConnectionObject Pool,通過自定義的ConnectionFactory類獲得一個(gè)connection

          第一種:受管的Connection Pool

          目前J2EE Container中常用的connection pool有:

          • DB Connection Pool
          • JMS Connection Pool
          • LDAP Connection Pool
          • JCA Connection Pool

          DB Connection PoolJDBC connection pool,基本上所有的J2EE容器都提供了實(shí)現(xiàn),JMS connection pool一般的JMS Server都提供了實(shí)現(xiàn),LDAP connection poolLDAP Server提供實(shí)現(xiàn), JCA connection pool需要自己實(shí)現(xiàn)resource adapter

          第二種:實(shí)現(xiàn)一個(gè)ConnectionObject Pool

          通常可以在已有第三方的Object Pool上實(shí)現(xiàn)自己的Connection Pool,如apachecommons pool,如果非要從頭開始當(dāng)然也是可以的。通常如果是要用規(guī)范的API獲取connection,如jdbcjms舉個(gè)例子DriverManager.getConnection, Connection.close, 為了使這個(gè)Connection Pool可以方便地用在各種jdbc驅(qū)動(dòng)上,而且為了使原來沒有使用該Connection Pool的應(yīng)用可以方便地切換到該Connection Pool上,我們可能需要用到AOP,這樣DriverManager.getConnection就是從pool中取出connecton(如果pool中有的話),Connection.close就是return給pool,從邏輯上釋放。用OO的方法也是可以實(shí)現(xiàn)的。

          參考文章:JavaWorld:
          Dive into connection pooling with J2EE



          主站蜘蛛池模板: 中山市| 喀什市| 平原县| 泸州市| 寿宁县| 利川市| 涟源市| 洛扎县| 洛川县| 津南区| 五台县| 互助| 宁晋县| 南华县| 图片| 彰化县| 定结县| 慈利县| 佳木斯市| 绩溪县| 襄垣县| 大英县| 巴彦县| 合阳县| 宁德市| 边坝县| 玉环县| 陇川县| 康保县| 明溪县| 马龙县| 禄劝| 靖宇县| 苍山县| 华容县| 绵阳市| 资阳市| 什邡市| 舞阳县| 旌德县| 泗洪县|