gpt4 book ai didi

java - XA 事务结束、垃圾收集和直到 tx-complete =true

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:42 32 4
gpt4 key购买 nike

在理解为什么存在持续 6 小时的连接 session 并且还持有锁并破坏线程时存在以下问题,如果 XADataSource(Oracle 驱动程序)的连接需要 Java 引用才能保持 Activity 状态,则会出现问题。

就分布式事务设置为保留直到显式结束(keep-xa-conn-till-tx-complete=true)而言,我想知道一旦 GC 回收连接,驱动程序如何决定是否关闭连接并提交事务。 DBMS 有办法做到这一点吗?

所以问题是 DBMS 如何决定是否放弃分布式事务。

最佳答案

DBMS 不会决定结束事务,而是事务管理器决定。

事务管理器被设置为在应用程序容器中运行,无论它们是 Spring、J2EE 应用程序服务器还是其他容器。他们必须通过正确配置来“知道”他们是分布式事务管理器。在分布式事务环境中,您有多个事务应用程序和/或服务进行交互以完成事务,它们都必须能够支持分布式事务,以正确使用 XADataSource 并在提交与回滚的链上上下发送正确的信号。

假设您遇到上述情况,多个应用程序和/或服务参与分布式事务,听起来好像其中一个配置不正确。链中的某些内容并不是真正的分布式事务,因此当它完成时,它只是在本地完成,而不是将信号发送回线路。因此分布式事务永远不会完成,保持连接打开。

检查参与事务的每个应用程序和/或服务的配置。在每个事务上添加日志输出,详细说明该事务是否是分布式事务。如果您无法做到这一点,则将日志记录输出添加到记录事务开始和结束的每个记录中。找到操作序列中您看到开放交易但看不到结束交易的最新点。如果您看到这一点,则很可能是链中紧随其后的节点做了错误的事情。

祝你好运。

关于java - XA 事务结束、垃圾收集和直到 tx-complete =true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27235719/

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