连接池
使用连接池可帮助您降低连接管理开销并减少数据访问的开发任务。
每当应用程序尝试访问后端存储器(例如数据库)时,它需要资源以创建、维护和释放与该数据库的连接。为了减轻此过程对整体应用程序资源的影响,应用程序服务器允许管理员在应用程序服务器上建立可以由应用程序共享的后端连接池。连接池在数个用户请求之间分布连接开销,从而节省了应用程序资源以供将来的请求使用。
应用程序服务器支持用于连接池和连接重用的 JDBC 4.0 API。使用连接池指导应用程序中 JDBC 调用,指导企业 Bean 使用数据库。
使用连接池的好处
连接池可改进任何需要连接的应用程序(特别是基于 Web 的应用程序)的响应时间。当用户通过 Web 对资源发出请求时,该资源将访问数据源。由于用户频繁地与因特网上的应用程序建立连接和断开连接,所以应用程序的数据访问请求量可能会相当大。因此,对于基于 Web 的应用程序数据存储器总开销会迅速增大,性能随之下降。但是,使用连接池功能时,Web 应用程序的性能相对于正常结果可以提高达 20 倍。
借助连接池,大多数用户请求不会引起创建新连接的开销,因为数据源能找出并使用连接池中的现有连接。当请求得到满足,并将响应返回到用户时,该资源会将连接返回到连接池以供再次使用。这就避免了断开连接造成的开销。每个用户请求都有一些连接或断开连接的开销。使用初始资源在池中产生连接后,由于能重用现有连接,因此其他开销并不大。
何时使用连接池
在符合任何以下条件的应用程序中使用连接池:
- 它不能忍受每次使用连接时获取连接和释放连接的开销。
- 它需要应用程序服务器中的 Java™ 事务 API (JTA) 事务。
- 它需要在相同事务中的多个用户之间共享连接。
- 它需要利用产品功能部件来管理应用程序服务器中的局部事务。
- 它不管理其自己连接的池。
- 它不管理创建连接的细节(如数据库名称、用户名或密码)

如何将连接合在一起
配置唯一数据源或连接工厂时,必须为其提供一个唯一的 Java 命名和目录接口 (JNDI) 名称。这个 JNDI 名称及其配置信息用来创建连接池。每个配置好的数据源或连接工厂存在单独的连接池。
如果运行包含三个服务器的集群,这三个服务器都使用 myDataSource,并且 myDataSource 的“最大连接数”设置为 10,那么可生成多达 30 个连接(3 个服务器乘以 10 个连接)。
在集群中,三个 z/OS® 控制器分别包含三个使用 myDataSource 的服务方,而对于应用程序服务器为 myDataSource 的每个实例创建的连接池,您可以将“最大连接数”的值设置为 10。因此,可以生成多达 90 个连接(9 个服务方乘以 10 个连接)。
请考虑此行为可能会对后端资源可以支持的连接数产生的影响。有关更多信息,请参阅主题“连接池设置”。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
- 每个实体 Bean 事务都需要一个附加的数据库连接,此连接专门用来处理事务。
- 如果使用克隆,那么对于每个克隆,存在一个数据池。
在受支持的 UNIX 系统上,为每个连接都创建单独的 DB2® 进程;在内存不足的系统上,这些进程会迅速影响性能并导致错误。
使用连接共享时,还必须注意仅能共享从相同连接池获取的连接。