连接池 - 深入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 标准扩展的连接合用 连接池 - 深入J2EE的连接合用(2)时间:2011-06-16 IBM Siva Visveswaran通过使用 DataSource 接口 (JDBC 2.0) 或 DriverManager (JDBC 1.0) 接 口,J2EE 组件可以获得物理数据库连接对象。要获得逻辑(合用的)连接, J2EE 组件必须使用以下这些 JDBC 2.0 合用管理器接口: javax.sql.ConnectionPoolDataSource 接口,该接口充当合用的 java.sql.Connection 对象的资源管理器连接 factory。每家数据库服务器供应 商都提供该接口的实现(例如,Oracle 实现 oracle.jdbc.pool.OracleConnectionPoolDataSource 类)。 javax.sql.PooledConnection 接口,该接口封装到数据库的物理连接。同样 ,数据库供应商提供其实现。 对于那些接口和 XA 连接的每一个,都存在一个 XA(X/Open 规范)等价定 义。 以下代码示例显示了 EJB 应用如何利用合用的连接对象来访问数据库资源( 基于 JDBC 2.0)。本例中的 EJB 组件使用 JNDI 查询来确定数据库连接池资源 的位置。JNDI 1.2 标准扩展 API 允许 Java 应用以相同的方式访问位于完全不 同的目录和命名系统中的对象。使用 JNDI API,应用可以查询目录来确定任何 资源(例如,数据库服务器、LDAP 服务器、打印服务器 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |