gpt4 book ai didi

java - 没有事务的 JTA 数据源

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:02:21 24 4
gpt4 key购买 nike

(假设资源的手动登记和删除。)

我有许多启用了 XA 的资源/数据源,我计划为其执行事务更新。此外,一些支持 XA 的数据源可以单独更新(不需要任何其他资源)。

假设我已经提交了一些已登记数据源的事务,那么我是否可以忽略 TransactionManager 以单方面更新数据源。

我是否根本不启动全局事务并直接在资源本身上提交?假设这是正确的方法,我可以随后在没有副作用的情况下在事务中征用资源吗?

谢谢,

克里斯

最佳答案

XA 资源支持 XA。不是要求。因此,完全有可能在支持 XA 的资源上启动非 XA 事务,并在本地提交它。

第二个问题不是很清楚。将本地事务下的资源添加到 XA 事务中?不确定它是受支持的用例。或者问题是“我可以在提交本地资源后将资源添加到 XA 事务吗?”。是的,你可以。

我们以数据库连接为例。通过连接启动本地事务时,事务 ID 仅存在于数据库中。提交后,该 ID 消失,连接恢复到原始状态,即不在任何事务中。可以将连接添加到任何 XA 事务。

现在,当您启动 XA 事务时,多个连接(例如,来自集群中不同 JVM 的连接)可以共享同一个事务 ID,并且从数据库的角度来看,它们在同一个事务中。如果您在本地事务中有另一个连接,它有自己的数据库事务 ID,您将如何将该连接(更重要的是,其中所做的更改)添加到具有不同 ID 的现有 XA 中?这将是一个困惑的业务,我相信不支持。

关于java - 没有事务的 JTA 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130934/

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