【发布时间】:2023-03-14 19:15:01
【问题描述】:
我有两个 spring 应用程序 A 和 B,每个都在一个单独的 EAR 文件中。现在我想从 A 调用到 B,反之亦然,甚至可能是 A -> B -> A 或更多。
调用必须交易安全。
推荐的方法是什么?
【问题讨论】:
标签: java spring transactions ear distributed-transactions
我有两个 spring 应用程序 A 和 B,每个都在一个单独的 EAR 文件中。现在我想从 A 调用到 B,反之亦然,甚至可能是 A -> B -> A 或更多。
调用必须交易安全。
推荐的方法是什么?
【问题讨论】:
标签: java spring transactions ear distributed-transactions
保持这种安全的唯一方法是使用由容器管理的 JTA 事务。 Spring 通过其JtaTransactionManager 支持这些,因此您可以编写与 Spring 中的任何其他事务相同的事务逻辑。所有数据源都必须由容器管理,而不是由应用程序管理。
【讨论】:
从一个 EAR 到另一个 EAR 进行同步事务的唯一方法——通过两次面提交——调用是使用远程 EJB :(
如果可能在您的情况下,我宁愿使用 JMS 进行异步调用,消息的发送将与您的事务耦合,但接收方将无法回滚您的事务,因为它可以远程 EJB 调用。
【讨论】: