走自己的路

          路漫漫其修遠兮,吾將上下而求索

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            50 隨筆 :: 4 文章 :: 118 評論 :: 0 Trackbacks
           

          我們需要使用Connection Pool的情況都通常都是指網絡連接,比如:DB connection SocketConnection,這些對象往往需要使用Pool來管理,因為這些對象的重復創建需要較長的時間,是系統性能的瓶頸。

          Connection Pool實現包括兩類:第一種是受管的Connection Pool,需要實現JCAResource Adapter規范,通過JNDI lookup出來ConnectionPool對象,然后調用受管ConnectionPool對象的getConnection方法獲得connection第二種是自己實現一個ConnectionObject Pool,通過自定義的ConnectionFactory類獲得一個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容器都提供了實現,JMS connection pool一般的JMS Server都提供了實現,LDAP connection poolLDAP Server提供實現, JCA connection pool需要自己實現resource adapter

          第二種:實現一個ConnectionObject Pool

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

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



          主站蜘蛛池模板: 湖北省| 舟山市| 博湖县| 巴林左旗| 陆河县| 江孜县| 黔东| 西乡县| 运城市| 革吉县| 延边| 琼结县| 江北区| 广东省| 江山市| 出国| 沾化县| 阜平县| 邵东县| 浦东新区| 鹤庆县| 牙克石市| 加查县| 磐石市| 洪雅县| 轮台县| 石楼县| 德安县| 泸定县| 大理市| 九龙城区| 应用必备| 嵊州市| 获嘉县| 武义县| 阿尔山市| 临泉县| 盖州市| 囊谦县| 黄石市| 襄汾县|