Java 需要澄清交易属性吗

Java 需要澄清交易属性吗,java,transactions,ejb,Java,Transactions,Ejb,我已经阅读了有关TransactionAttributeType.REQUIRED的 如果客户机在事务中运行并调用企业bean的方法,则该方法在客户机的事务中执行。如果客户机未与事务关联,则容器将在运行该方法之前启动一个新事务 客户机是部署在服务器A上的EJB应用程序,在事务中调用部署在另一台服务器B上的另一个bean的方法methodB。如果methodB具有TransactionAttributeType.REQUIRED,则它将在客户端应用程序启动的相同事务下运行。对吧? 如果是,那么部署

我已经阅读了有关TransactionAttributeType.REQUIRED的

如果客户机在事务中运行并调用企业bean的方法,则该方法在客户机的事务中执行。如果客户机未与事务关联,则容器将在运行该方法之前启动一个新事务

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

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

如果没有,那么
methodB
如何使用相同的事务

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

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

因此,第一个问题的答案是肯定的:
methodB
在服务器B中,由服务器A上的EJB应用程序调用,在同一事务中运行。最后的
提交
回滚
由服务器A上运行的客户端控制

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

相关的: