【问题标题】:What is the "correct" way to call transactionally safe from one EAR file to another using Spring?使用 Spring 从一个 EAR 文件调用事务安全到另一个文件的“正确”方法是什么?
【发布时间】:2023-03-14 19:15:01
【问题描述】:

我有两个 spring 应用程序 A 和 B,每个都在一个单独的 EAR 文件中。现在我想从 A 调用到 B,反之亦然,甚至可能是 A -> B -> A 或更多。

调用必须交易安全

推荐的方法是什么?

【问题讨论】:

    标签: java spring transactions ear distributed-transactions


    【解决方案1】:

    保持这种安全的唯一方法是使用由容器管理的 JTA 事务。 Spring 通过其JtaTransactionManager 支持这些,因此您可以编写与 Spring 中的任何其他事务相同的事务逻辑。所有数据源都必须由容器管理,而不是由应用程序管理。

    【讨论】:

    • 提供的;但是我可以使用什么技术来进行实际通话呢? RMI 不起作用,因为它不是事务性的,JmsInvokerProxyFactoryBean 也不是事务性的,其他远程技术也有同样的问题。
    【解决方案2】:

    从一个 EAR 到另一个 EAR 进行同步事务的唯一方法——通过两次面提交——调用是使用远程 EJB :(

    如果可能在您的情况下,我宁愿使用 JMS 进行异步调用,消息的发送将与您的事务耦合,但接收方将无法回滚您的事务,因为它可以远程 EJB 调用。

    【讨论】:

    • 肯定是这样,还是更多的预感?
    • @Mauli 据我所知...你可以看看atomikos.com 但如果你已经有一个 EJB 容器我会使用它...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多