1

这是场景,顺便说一句,我正在寻找以 Java 为中心的答案。

  1. 客户端代码从 Provider Application #1 调用 REST 服务 A (POST)。
  2. 客户端代码使用 JDBC 直接更新内部数据库。
  3. 客户端代码从 Provider Application #2 调用 REST 服务 B (POST)。
  4. 步骤 1 到 3 需要发生在具有两阶段提交支持的分布式事务中,即如果步骤 2 的数据库更新失败,那么我们要撤消步骤 1 的 POST。如果步骤 3 的 POST 失败,我们想要撤消步骤 1 的 POST 和步骤 2 的数据库更新。

有没有一种方法可以使用 JTA 完成此任务,而无需编写我们自己的补偿代码(撤消步骤 1 和 2)?

4

1 回答 1

2

除非每个参与者都独立支持两阶段提交,否则您无法协调或管理分布式事务。

所以在这种情况下——如果你的 REST 服务支持两种方法,相当于事务的两个阶段——你可以在你的客户端中实现一个事务管理器。

于 2012-12-04T12:14:20.487 回答