3.2. 关于本地、全局和分布式的事务管理器


事务管理器可以是本地、全局或分布式的。

3.2.1. 关于本地事务管理器

本地事务管理器 是一个事务管理器,只能协调单一资源的事务。本地事务管理器的实现通常嵌入到资源本身中,应用程序使用的事务管理器所使用的事务管理器是一个精简打包程序。

例如,Oracle 数据库有一个内置的事务管理器,它支持解包操作(使用 SQL BEGINCOMMITROLLBACK 语句,或者使用原生 Oracle API)和各种事务隔离级别。对 Oracle 事务管理器的控制可以通过 JDBC 导出,此 JDBC API 则供应用程序用于分离事务。

在此上下文中,了解构成资源是非常重要的。例如,如果您使用 JMS 产品,JMS 资源是 JMS 产品的单一运行实例,而不是单个队列和主题。在有些情况下,如果以不同方式访问相同的基础资源,有时会出现多个资源可能是一个单一资源。例如,您的应用可以直接访问关系数据库(通过 JDBC),间接访问一个对象关系映射工具(如 Hibernate)。在这种情况下,涉及相同的基础事务管理器,因此应该可以在同一事务中注册这些代码片段。

注意

无法保证在每次情况下都会保证这一点。虽然原则上有可能是原则,但一些在 Spring Framework 或其他打包程序层设计的细节可能会阻止其在实践中工作。

应用程序可以相互独立地工作很多不同的本地事务管理器。例如,您可以有一个用于操作 JMS 队列和主题的 Camel 路由,其中 JMS 端点引用 JMS 事务管理器。另一个路由可以通过 JDBC 访问关系数据库。但是,您不能将 JDBC 和 JMS 访问组合到同一路由中,并使他们参与同一个事务。

3.2.2. 关于全球事务管理器

全局事务管理器是一个事务管理器,可以在多个资源上协调事务。当您无法依赖资源本身内置的事务管理器时,这是必需的。外部系统有时称为事务处理监控器(TP 监控),能够在不同资源之间协调事务。

以下是对多个资源操作的事务的先决条件:

  • 全局事务管理器或 TP 监控 - 实施 2 阶段提交协议的外部交易系统,用于协调多个 XA 资源。
  • 支持 XA 标准 的资源 - 参与 2 阶段提交,资源必须支持 XA 标准。请参阅 第 1.7.1.2 节 “支持 XA 标准”。实际上,这意味着资源能够导出 XA 交换机 对象,提供对外部 TP 监视器的完整事务控制。
提示

Spring Framework 本身并不提供 TP 监控来管理全局事务。但是,它提供了与 OSGi 提供的 TP 监控器集成或与 JavaEE 提供的 TP 监控(其中集成由 JtaTransactionManager 类实施)的支持。因此,如果您将应用程序部署到具有完整事务支持的 OSGi 容器中,您可以在 Spring 中使用多个事务资源。

3.2.3. 关于分布式事务管理器

通常,服务器会直接连接到事务中涉及的资源。但是,在分布式系统中,偶尔需要通过 Web 服务连接到仅间接公开的资源。在这种情况下,您需要一个支持分布式事务的 TP 监控。有几种标准来描述如何支持各种分布式协议的事务,例如,Web 服务的 WS-AtomicTransactions 规格。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat