Java中的Connection Pool

我们需要使用Connection Pool的情况都通常都是指网络连接,比如:DB connection, Socket的Connection,这些对象往往需要使用Pool来管理,因为这些对象的重复创建需要较长的时间,是系统性能的瓶颈。

  Connection Pool实现包括两类:第一种是受管的Connection Pool,需要实现JCA的Resource Adapter规范,通过JNDI lookup出来ConnectionPool对象,然后调用受管ConnectionPool对象的getConnection方法获得connection,第二种是自己实现一个Connection的Object Pool,通过自定义的ConnectionFactory类获得一个connection。

  第一种:受管的Connection Pool

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

  DB Connection Pool

  JMS Connection Pool

  LDAP Connection Pool

  JCA Connection Pool

  DB Connection Pool即JDBC connection pool,基本上所有的J2EE容器都提供了实现,JMS connection pool一般的JMS Server都提供了实现,LDAP connection pool由LDAP Server提供实现, JCA connection pool需要自己实现resource adapter。

  第二种:实现一个Connection的Object Pool

  通常可以在已有第三方的Object Pool上实现自己的Connection Pool,如apache的commons pool,如果非要从头开始当然也是可以的。通常如果是要用规范的API获取connection,如jdbc,jms,举个例子DriverManager.getConnection, Connection.close, 为了使这个Connection Pool可以方便地用在各种jdbc驱动上,而且为了使原来没有使用该Connection Pool的应用可以方便地切换到该Connection Pool上,我们可能需要用到AOP,这样DriverManager.getConnection就是从pool中取出connecton(如果pool中有的话),Connection.close就是return给pool,从逻辑上释放。用OO的方法也是可以实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值