JCA为资源适配器(resource adapters)指定了几个级别的事务支持。
你可以在 ra.xml
文件中指定你的资源适配器支持的事务类型。
它本质上有三个选项:none(例如CICS EPI 连接器),本地事务(例如CICS ECI 连接器),全局事务(例如IMS 连接器)。
<connector> <resourceadapter> <!-- <transaction-support>NoTransaction</transaction-support> --> <!-- <transaction-support>LocalTransaction</transaction-support> --> <transaction-support>XATransaction</transaction-support> <resourceadapter> <connector>
对于全局事务,可以使用Spring中常见的事务机制来划分事务,
并以 JtaTransactionManager
为后端(委托给后面的J2EE分布式事务协调程序)。
对于单独CCI ConnectionFactory
上的本地事务,
Spring为CCI提供了一个专门的事务管理策略,
类似于JDBC中的 DataSourceTransactionManager
,
CCI API定义了一个本地事务对象和相应的本地事务划分方法。
Spring的 CciLocalTransactionManager
执行这样的本地CCI事务,
完全依照Spring中常见的 PlatformTransactionManager
抽象。
<bean id="eciConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="eis/cicseci"/> </bean> <bean id="eciTransactionManager" class="org.springframework.jca.cci.connection.CciLocalTransactionManager"> <property name="connectionFactory" ref="eciConnectionFactory"/> </bean>
声明式或编程式的事务策略都能被用于任意的Spring事务划分功能。
这是Spring通用的 PlatformTransactionManager
抽象的结果,它解耦了实际运行策略中的事务划分。
你可以保持现在的事务划分,只需要在 JtaTransactionManager
和 CciLocalTransactionManager
之间转换即可。
有关Spring的事务机制,请参见 第 9 章 事务管理 一章。