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