转载地址:http://blog.csdn.net/a154832918/article/details/6790612

J2EE提供JCA(Java Connector Architecture)规范来标准化对EIS(Enterprise Information System)的访问。这个规范被分为几个不同的部分: 

SPI(Service provider interfaces)是连接器提供者(connector provider)必须实现的接口。 这些接口组成了一个能被部署在J2EE应用服务器上的资源适配器(resource adapter)。 在这种情况下,由服务器来管理连接池(connection pooling)、事务和安全(托管模式(managed mode))。 应用服务器还负责管理客户端应用程序之外所拥有的配置。连接器(connector)同样能在脱离应用服务器的情况下使用;在这种情况下,应用程序必须直接对它进行配置(非托管模式(non-managed mode))。 

CCI (Common Client Interface)是应用程序用来与连接器交互并与EIS通信的接口。同样还为本地事务划界提供了API。 

Spring对CCI的支持,目的是为了提供以典型的Spring方式来访问CCI连接器的类,并有效地使用Spring的通用资源和事务管理工具。 

Note 
连接器的客户端不必总是使用CCI。 某些连接器暴露它们自己的API,只提供JCA资源适配器(resource adapter) 以使用J2EE容器的某些系统契约(system contracts)(连接池(connection pooling),全局事务(global transactions),安全(security))。 Spring并没有为这类连接器特有(connector-specific)的API提供特殊的支持。 


21.2. 配置CCI 
21.2.1. 连接器配置 
使用JCA CCI的基础资源是 ConnectionFactory 接口。 所用的连接器必须提供这个接口的一个实现。 

为了使用连接器,可以把它部署到你的应用服务器上,并从服务器的JNDI环境(托管模式)取回 ConnectionFactory。 连接器必须打包为一个RAR文件(resource adapte archive)并包含一个部署描述符文件 ra.xml 。 部署时需要指定资源的实际名字。如果想通过Spring访问它,只要简单地使用Spring的 JndiObjectFactoryBean 来通过JNDI名字获取工厂。 

使用连接器的另一种方法是把它嵌入到应用程序中(非托管模式(non-managed mode)),而不用在应用服务器中部署并配置它。 Spring提供了通过已提供的 FactoryBean(LocalConnectionFactoryBean))来将连接器配置成一个bean的可能。 在这种方式中,只需要把连接器类库放到classpath目录下(不需要RAR文件和 ra.xml 描述符)。 如果有必要的话,必须从连接器的RAR文件解压得到那个类库。 

一旦访问 ConnectionFactory 实例, 就可以将它注入到组件。这些组件既可以用简单的CCI API编码,也可以利用Spring支持CCI访问的类(比如,CciTemplate)。 

Note 
当在非托管模式(non-managed mode)下使用连接器时,将无法使用全局事务, 因为该资源从不会被加入或删除到当前线程的当前全局事务中。该资源根本不知道任何可能正在运行的全局的J2EE事务。 


21.2.2. 在Spring中配置ConnectionFactory 
为了创建到 EIS 的连接,如果处于托管模式(managed mode),你需要从应用服务器获取一个 ConnectionFactory , 或者当你在非托管模式(non-managed mode)时直接从Spring去获取。 

在托管模式(managed mode)下,你可以从JNDI访问 ConnectionFactory, 它的属性将被配置在应用服务器中。 

<bean /> 
</bean> 
声明式或编程式的事务策略都能被用于任意的Spring事务划分功能。 这是Spring通用的 PlatformTransactionManager 抽象的结果,它解耦了实际运行策略中的事务划分。 你可以保持现在的事务划分,只需要在 JtaTransactionManager 和 CciLocalTransactionManager 之间转换即可。

相关文章:

  • 2021-12-13
  • 2022-12-23
  • 2021-05-21
  • 2021-09-02
  • 2022-01-04
  • 2021-12-25
  • 2021-06-11
  • 2021-05-31
猜你喜欢
  • 2021-05-19
  • 2021-10-06
  • 2021-11-09
  • 2022-12-23
  • 2021-11-18
  • 2021-12-06
  • 2021-07-06
相关资源
相似解决方案