Welcome 微信登录

首页 / 软件开发 / JAVA / 连接池 - 深入J2EE的连接合用

连接池 - 深入J2EE的连接合用2011-06-16 IBM Siva VisveswaranJava 2 Enterprise Edition (J2EE) 规范提供了实现高度可伸缩、可靠和可 用的电子商务应用的分布式基于服务的体系结构。通常,J2EE 应用体系结构与 模型-视图-控制器 (MVC) 框架相对应 -- 资源库/外部系统资源支持域模型( 模型),JSP/Servlet 管理显示(视图),而 EJB 处理商业逻辑(控制器)。

通过服务器端所有三层中的组件实现一个典型的电子商务应用用例。考虑到 用户交互数量的庞大(对于面对客户的应用,有上百万个),需要优化地共享有 限的服务器端资源。这类资源可能包括数据库、消息队列、目录、企业系统 (SAP、CICS) 等等,它们中的每一个都可以由使用代表资源访问点的连接对象的 应用来访问。管理对那些共享资源的访问对于满足 J2EE 应用的高性能需求来说 至关重要。

连接合用是由数据库供应商倡导的技术,其目的是允许客户机共享一组高速 缓存的连接对象,这些对象提供对数据库资源的访问。在本文中,我分析了 J2EE 环境中服务器端资源(例如数据库、消息队列、目录和企业系统)的连接 合用。

为何合用资源连接?

考虑一下 代码示例 ,其中,EJB 使用 JDBC 1.0、 不使用连接合用来访问 数据库资源。

很明显,该示例的主要问题是连接的打开和关闭。考虑到实体 bean 是共享 组件,因此,对每个客户机请求,都要进行几次获取和释放数据库连接的操作。

从图 1 可以看出,使用 JDBC 1.0 通过数据库管理器获取和释放数据库连接 将影响 EJB 层的性能。这种影响是由数据库资源管理器进程创建和摧毁那些对 象而引起的。应用服务器一般需要花 1 到 3 秒的时间来建立数据库连接(包括 与服务器通信、认证等等),并需要对每一个客户机 (EJB) 的请求进行连接。

图 1. 使用 JDBC 1.0 的连接管理

使用服务供应商设施的连接合用

现在看一下在 J2EE 环境中,数据库和非数据库资源类型当前可以使用哪些 连接合用设施。

JDBC 2.0 标准扩展 API
JDBC 2.0 标准扩展 API 指定数据库服务供应商可以实现具有以下特性的合用 技术:允许请求客户机透明地共享资源池的多个连接对象。在那种情况下,因为 池管理器预先在启动时创建连接对象,所以,J2EE 组件可以使用连接对象,而 不会导致数据库资源管理器上的系统开销。应用服务器供应商在其内存空间实现 池管理器,并根据需要动态改变池的大小,从而优化资源的使用。图 2 中显示 了这种情况。

图 2. 使用 JDBC 2.0 标准扩展的连接合用