Application server-specific integration

Spring 的事务抽象通常与应用服务器无关。此外,Spring 的 JtaTransactionManager 类(可以选择执行 JNDI 查找 JTA UserTransaction 和 TransactionManager 对象)会自动检测后者对象的位置,这因应用服务器而异。对 JTA TransactionManager 的访问允许增强事物语义—特别是支持事务暂停。详情请参见 JtaTransactionManager 的 javadoc。

Spring 的 JtaTransactionManager 是在 Java EE 应用服务器上运行的标准选择,并且已知可以在所有普通服务器上运行。高级功能,如事务暂停,也可以在许多服务器上运行(包括 GlassFish、JBoss 和 Geronimo),无需任何特殊配置。然而,对于完全支持的事务暂停和进一步的高级集成,Spring 包含了针对 WebLogic Server 和 WebSphere 的特殊适配器。这些适配器将在下面的章节中讨论。

对于标准场景,包括 WebLogic Server 和 WebSphere,考虑使用方便的 <tx:jta-transaction-manager/>配置元素。配置后,该元素会自动检测底层服务器,并选择该平台可用的最佳事务管理器。这意味着你不需要明确地配置特定于服务器的适配器类(如在下面的章节中讨论的)。相反,它们是自动选择的,标准的 JtaTransactionManager 是默认的退路。

IBM WebSphere

在 WebSphere 6.1.0.9 及以上版本,推荐使用的 Spring JTA 事务管理器是 WebSphereUowTransactionManager。这个特殊的适配器使用 IBM 的 UOWManager API,它在 WebSphere Application Server 6.1.0.9 及以上版本中可用。通过这个适配器,Spring 驱动的事务暂停(由 PROPAGATION_REQUIRES_NEW 发起的暂停和恢复)得到了 IBM 的正式支持。

Oracle WebLogic 服务器

在 WebLogic Server 9.0 或以上版本中,你通常会使用 WebLogicJtaTransactionManager 而不是现有的 JtaTransactionManager 类。这个普通 JtaTransactionManager 的特殊 WebLogic 专用子类在 WebLogic 管理的事务环境中支持 Spring 事务定义的全部功能,超出了标准 JTA 语义。其特点包括事务名称、每个事务的隔离级别以及在所有情况下适当恢复事务。