gpt4 book ai didi

Java EJB 事务和事务资源

转载 作者:行者123 更新时间:2023-12-01 11:14:13 25 4
gpt4 key购买 nike

事务管理器如何知道我们何时参与事务资源并且需要对其进行特殊处理?例如:

EJB 中的方法:

public void doStuff() {
persistentManager.doWork(); // needs to be rolled back/commmited
somefield2.doWork(); // doesnt participate in roll back/commit
System.out.println("x"); // doesnt participate in roll back/commit
jmsStuff.doWork(); // needs to be rolled back/commmited
}

最佳答案

当您使用 EntityManager 时,应用程序服务器或 JPA 提供程序将使用 TransactionSynchronizationRegistry 或(等效的内部 API)在当前事务上下文中登记回调,以便在事务提交之前收到通知,以便它可以使用底层资源( JDBC DataSource)来完成实际工作。

当您查找或使用 JDBC 资源时,应用程序服务器会向 TransactionManager 注册该资源,以便在提交/回滚事务时完成该资源。确切的细节未指定,但它可能在幕后使用 JCA。

当您查找 JCA 资源(例如 JMS)时,JCA 规范包含有关应用程序服务器如何与资源提供者交互以收到事务完成通知的详细信息(例如 XAResource 接口(interface))。

关于Java EJB 事务和事务资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32026949/

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