走自己的路

路漫漫其修远兮,吾将上下而求索

  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




只有注册用户登录后才能发表评论。


网站导航: