问题标签 [xa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如果 XAResource 是 Tx 中涉及的唯一资源,则应调用 XAResource.prepare()
我正在尝试一些带有 JOTM 的东西,并且有一些关于事情如何工作的通用问题。我列出了事件的顺序,以获得对所发生事件的明确总结。
- 创建交易
- 争取资源
- tx.commit
- 资源.start
- 资源端
- 资源提交
为什么永远不会调用 resource.prepare 并且提交的标志(onephase)为真。这是此类用例的预期行为吗?
java - 为什么从 XAResource 抛出 XAException 仍然不允许事务提交成功?
我正在尝试一些带有 JOTM 的东西,并且有一些关于事情如何工作的通用问题。我列出了事件的顺序,以获得对所发生事件的明确总结。
- 创建交易
- 争取资源
- tx.commit
- 资源.start
- resource.end 抛出 XA 异常
- 资源提交
即使 resource.end 抛出 XAException , tx 提交仍然可以工作,这对我来说似乎是完全错误的。如果它没有将 tx 标记为回滚,那么抛出异常有什么意义......
是所有 tx 管理器都这样工作还是抛出 XAException 会使 tx 失败?
oracle - Oracle DB锁表使用
最近我有一个任务,根据这个任务,我需要有一个特定的锁定功能。具体是因为:
- 正在更新表的事务是分布式的,所以我无法控制它,
- 白天必须同时支持数千个非阻塞事务,让我们称它们为“通用”操作,
- 每个“通用”操作都更新了特定“分支”(“LDN”、“NY”、“LA”...)上的行,
- 每天一次,每个分支都有一个“主”操作,这些操作在不同的分支上大量发生,
- 在“主”操作期间,该分支上不会发生“一般”操作。
- 当“master”操作开始时,它必须等待当前“general”操作完成提供的分支,这些操作在“master”操作到达之前就在系统中。
- 在特定分支的“主”处理期间,可以更新所有其他分支。
为了存档,我创建了 Oracle DB 特定表
支持不同操作的以下功能:
对于“一般”操作:
对于“主”操作:
- 当“主”操作到来时,我开始单独的事务,其中:
- 在 EXCLUSIVE 模式下锁定 BRANCH_LOCK 表,当在另一个事务中在该表上存在 SHARE 模式 LOCK 时,该事务无法获取(这样,我保证在所有当前的“一般”操作完成后,“主”操作将开始,尽管它等待完成所有分支上的事务,而不仅仅是指定一个),
- 将分支的标志设置为“Y”(这样,我保证在“主”操作处理时不会有“一般”事务),
- 在传入事务中,我将表中的标志更改为“N”,因此在它提交后,BRANCH_LOG 表将在 FLAG 列中具有适当的值,并且系统将能够再次处理“一般”操作。
这还没有投入生产,所以我想知道有没有更好的解决方案,除了描述的还有其他缺点吗?
一些我没有提到的更新:
- '主'操作对'一般'操作的结果起作用,所以在'主'处理期间没有'一般'操作丢失是至关重要的,所以这就是为什么当前'一般'操作必须在主操作开始处理之前完成.
- 同一分支上的多个“一般”操作每秒发生一次,每秒大约 3'000 次操作,
- 分支只能发生一个“主”操作,可以同时处理不同分支上的多个“主”操作。
oracle - Oracle RAC,我需要 XA 驱动程序吗?
我有 Oracle 11g,配置为使用 Real Application Cluster (RAC) 和存储。
我认为 XA 适用于 2PC 事务,适用于多个数据源/管理器。
谢谢。
java - 没有事务的 JTA 数据源
(假设手动征募和下架资源。)
我有许多启用 XA 的资源/数据源,我计划对其执行事务更新。此外,一些支持 XA 的数据源可以单独更新(不需要任何其他资源)。
假设我已经使用登记的数据源提交了许多事务,那么我是否可以忽略 TransactionManager 以单方面更新数据源。
我是否根本不启动全局事务并直接在资源本身上提交?假设这是正确的方法,那么我是否可以随后在事务中征用资源而不会产生副作用?
谢谢,
克里斯
spring - Spring、XA 和 WebSphere
我试图让 XA 事务在 WebSphere v7 内的 Spring v3 应用程序中工作。
我的应用上下文内容如下:
我正在参考这篇文章,它说在 UOW txn 管理器中混合,你会没事的。但它不是那样工作的。相反,在下面的代码中,消息被破坏性地读取,并且在引发异常时不会回滚。
事务逻辑是(在 scala 中):
谁能建议我如何将 WebSphere 的 JTA 事务管理器与 Spring 一起使用?
vb6 - 在 64 位 Win2k3 上使用 MSDTC/oracle XA 的 32 位 DLL
我有一个 COM+ 应用程序(主要基于 vb6),我需要在 64 位系统上运行。它应该与 Oracle 数据库(10g,32 位)通信。当我禁用 XA 时一切正常,但是当我启用它时,我收到以下错误;
XA 事务管理器调用 XA 资源管理器 DLL 中的“GetXaSwitch”函数。调用“GetXaSwitch”函数失败:File=d:\nt\com\complus\dtc\dtc\xatm\src\xarmconn.cpp Line=2503。
我的 oracle 客户端是 10g 32 位的。
我不太了解 32 位/64 位兼容性,但我确实看到我的应用程序正在调用位于注册表 WOW64 部分 ([hklm/software/wow6432node/microsoft/msdtc/mtxoci]) 中的 MSDTC dll,而它访问位于注册表的本机 64 位部分中的 XADLL ([hklm/software/microsoft/msdtc/xadll])
因此,我尝试将其中的引用更改为 32 位 dll,但它们不会加载。
有没有人对如何解决这个错误有任何想法?
mysql - 如何在jboss上与mysql服务器建立只读xa数据源连接
标题很清楚,如果您分享您的经验,我会很棒。
我试过了,但没有用。。
java - XA 模式下 Ehcache 无法将数据溢出到磁盘 (NotSerializableException)
我正在用 Ehcache 试验 XA 事务。目前我正在使用 Spring 事务管理和 Bitronix 作为事务管理器。
我使用以下方法创建、配置和填充缓存:
一切正常,Ehcache 按预期工作,被驱逐的元素超过 70 个。
现在,如果我diskPersistent
从更改false
为true
,则在 Ehcache 尝试将某些元素复制到磁盘存储时它不起作用,但以下异常:
这是预期的,因为将 Ehcache 切换到事务模式会使其将Integer
type 的原始值替换为 a SoftLock
:
完整地说,在使用 Atomikos 事务管理器时也会发生这种情况,并且在不使用 XA 模式时可以完美地工作。
问题是:有没有办法混合 XA 事务和磁盘溢出?
spring - ActiveMQ JMS XA Atomikos - 事务未启动错误
情况是我们想使用 XA 事务来协调 ActiveMQ 和 Hibernate (Sql Server 2008) 之间的活动。
我们正在使用:
- 春天 3.0.5
- 休眠 3.6.2
- 活动MQ 5.5.0
- Atomikos 3.7
我们看到在与事务相关的日志文件中生成以下错误尚未启动。这些总是与 JMS 相关。
事务“[ID]”尚未开始。
这些一直在生成到日志中。
问题更复杂,因为我们有 3 个使用相同 JMS 队列的 Web 应用程序,并且当仅运行一个 Web 应用程序时似乎不会生成错误。
这些被部署到在同一台机器上运行的 Tomcat 7.0.14 的不同实例。
我们的 Spring 配置: