8.2. 使用 JCA 概述
JCA 常规化 数据库驱动程序 的概念,方法是在驱动程序和应用服务器 之间添加 双向通信。驱动程序成为由 javax. resource.spi.ResourceAdapter 表示的资源适配器
。
有两个重要接口:
-
javax.resource.spi.ManagedConnectionFactory
由资源适配器实施。 -
javax.resource.spi.ConnectionManager
由应用服务器实现。
ManagedConnectionFactory
接口有两个目的:
Object createConnectionFactory (ConnectionManager cxManager)
方法可用于为给定 EIS (或数据库或消息代理)生成 连接工厂,供应用程序代码使用。返回的对象
可以是:-
通用
javax.resource.cci.ConnectionFactory
(此处未描述,请参阅 JCA 1.6,第 17 章: 常见客户端接口) -
EIS 特定的连接工厂,如知名
javax.sql.DataSource
或javax.jms.ConnectionFactory
。这是由 pax-transx-jdbc 和
捆绑包使用的 连接工厂 类型。pax-transx
-jms
-
通用
-
javax.resource.spi.ManagedConnection ManagedConnectionFactory.createManagedConnection ()
方法由 应用服务器 使用,创建与 EIS/database/broker 的实际物理连接。
ConnectionManager
由 应用服务器 实现,并由资源适配器 使用。它是首先执行 QoS 操作(池、安全性、事务管理),最后委托资源适配器的 ManagedConnectionFactory
来创建 ManagedConnection
实例的 应用服务器。流程类似如下:
-
应用程序代码使用从
ManagedConnectionFactory.createConnectionFactory ()
返回的对象创建并公开的 连接工厂。它可以是通用的 CCI 接口,如javax.sql.DataSource
。 -
此 连接工厂 不自行创建 连接,而是委托给
ConnectionManager.allocateConnection ()
传递 资源适配器- 特定的ManagedConnectionFactory
-
由 应用服务器 实现的
ConnectionManager
创建支持 对象、管理事务、池等,最终从传递ManagedConnectionFactory
获取 物理(管理)连接。 - 应用程序代码获得 连接,通常是 应用服务器 创建的 wrapper/proxy,最终委托给 资源适配器 的特定 物理连接。
下图中,应用服务器 创建了特定于 EIS 的非CCI 连接工厂。只需 - 访问 EIS (这里:数据库)是使用 javax.sql.DataSource
接口完成的,驱动程序的任务是提供 物理连接,而 应用服务器 则将其嵌套在(通常)执行池/备份的代理内(通常)