gpt4 book ai didi

java - 需要澄清有关交易属性

转载 作者:行者123 更新时间:2023-11-30 11:30:04 25 4
gpt4 key购买 nike

我已阅读关于 TransactionAttributeType.REQUIRED 的内容

If the client is running within a transaction and invokes the enterprise bean’s method, the method executes within the client’s transaction. If the client is not associated with a transaction, the container starts a new transaction before running the method.

客户端是一个部署在服务器A上的EJB应用程序,在一个事务中调用部署在另一个服务器B上的另一个bean的方法methodB。如果 methodBTransactionAttributeType.REQUIRED,那么它将在客户端应用程序启动的同一事务下运行。对吧?

如果是,那么部署在不同服务器上的应用程序如何知道在另一台服务器上启动的事务?

如果不是,那么methodB是如何使用同一个事务的?

我对 EJB 有点陌生,所以请放轻松。任何指向正确方向的指针都将受到高度赞赏。

最佳答案

如果服务器 A 上的客户端已启动事务,事务上下文将传播到带有 TransactionAttributeType.REQUIRED 注释的 bean 中。它是调用的一部分。

所以第一个问题的答案是肯定的:服务器 B 中的 methodB 由服务器 A 上的 EJB 应用程序调用,在同一个事务中运行。最终的commitrollback 由服务器 A 上运行的客户端控制。

服务器 A 上的客户端也可以在同一事务中征用其他 XA 资源:例如,它写入 XA 数据源并使用 XA JMS 发送消息。然后事务上的commit 持久化methodB 引起的变化,它会将行写入数据库,并且消息在队列中。如果客户端执行rollback,所有工作单元都将回滚(没有任何改变)。

相关:Two-phase commit protocol (Wikipedia)

关于java - 需要澄清有关交易属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com