1
下面是该场景,顺便说一下,我正在寻找以Java为中心的答案。多个REST调用可以参与分布式事务吗?
- 客户端代码调用来自提供者应用程序#1的REST服务A(POST)。
- 客户端代码使用JDBC直接更新内部数据库。
- 客户端代码调用来自提供者应用程序#2的REST服务B(POST)。
- 步骤1到3需要在具有两阶段落实支持的分布式事务中发生,即如果步骤2的数据库更新失败,那么我们要撤消步骤1的POST。如果第3步的POST失败,我们要撤消第1步的POST和第2步的数据库更新。
有没有一种方法可以使用JTA来完成此操作而无需编写我们自己的补偿代码(撤消步骤1和2)?
大多数情况下,使用Java Transaction API和XA Resources都是可能的。然而,困难的部分涉及到撤消POST请求,除非提供者应用程序具有一些非标准逻辑,否则你不能这么做。 – 2012-03-20 18:24:35