XA-Transaction结束,垃圾收集和till-tx-complete = true

时间:2014-12-01 19:28:06

标签: java oracle transactions garbage-collection

如果XADataSource(Oracle驱动程序)的连接完全需要Java引用,那么理解连接会话存在持续6个小时以及持有锁并断开线程的问题就会出现以下问题保持活力。

就分布式事务设置保持直到明确结束(keep-xa-conn-till-tx-complete = true)我想知道一旦GC回收,驱动程序如何决定关闭连接并提交事务连接。有没有办法让DBMS这样做?

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

1 个答案:

答案 0 :(得分:1)

DBMS不会决定结束事务,事务管理器会这样做。

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

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

检查参与交易的每个应用程序和/或服务的配置。在每个上添加日志记录输出,详细说明事务是否为分布式事务。如果你不能这样做,那么dd将输出记录到每个记录事务开始和结束的输出。查找操作序列中的最新点,您可以在其中看到开放事务但不是关闭事务。如果你看到这一点,它可能是链中的节点正在做错了。

祝你好运。