问题标签 [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 - JBoss 垃圾邮件 XA 恢复警告
我正在运行一个 JPA/Spring 应用程序,该应用程序连接到 Microsoft SQL Server 上启用了多个 XA 的数据源。一切正常,全局事务正确启动并根据需要回滚......
但是,JBoss 时不时地变得疯狂,每隔几秒钟就会开始发送以下警告:
到目前为止,我还无法破译我在这里应该做什么,我有点担心将这种状态的应用程序投入生产。
任何人都可以阐明为什么会发生这种情况,如何解决和避免它?
编辑:
在 Windows 日志中,我找不到任何看起来像 DTC 错误的内容:
MSDTC 使用以下设置开始:
安全配置(OFF = 0 和 ON = 1):允许远程管理员 = 0,网络客户端 = 0,事务管理器通信:允许入站事务 = 0,允许出站事务 = 0,事务 Internet 协议 (TIP) = 0,启用 XA事务 = 1,启用 SNA LU 6.2 事务 = 1,MSDTC 通信安全 = 需要相互验证,帐户 = NT AUTHORITY\NetworkService,检测到防火墙排除 = 0
已安装事务桥 = 0 过滤重复事件 = 1
正在尝试初始化 Microsoft 分布式事务协调器 (MS DTC)。这只是一条信息性消息。无需用户操作。
涉及 Microsoft 分布式事务协调器 (MS DTC) 的任何不确定分布式事务的恢复已完成。这只是一条信息性消息。无需用户操作。
数据库 MyDatabase(数据库 ID 20)在 1 秒内完成恢复(分析 589 毫秒,重做 0 毫秒,撤消 398 毫秒。)这只是一条信息性消息。无需用户操作。
jdbc - 迁移旧的 JDBC 程序以使用 XA
如果我想迁移一个使用旧 JDBC 接口来支持 XA 的程序,我需要做什么?我的意思是我需要在代码中执行的详细步骤。该程序在单个数据库上运行,但新功能需要引入新模式,一些旧功能需要支持跨 2 个模式的事务。我们正在使用 JBOSS。迁移它的最少步骤是什么?谢谢。
java - XA/JTA 事务:JMS 消息在 DB 更改可见之前到达
上下文是:
- 生产者(JTA 事务PT)正在向 JMS 队列发送消息并进行数据库更新;
- 消费者(JTA 事务CT)在同一队列上侦听并在收到消息时读取 DB;
- 应用程序服务器 - WebLogic,DB - Oracle。
我观察到,有时CT(还没有?)能够看到PT的 DB 更改,如果已经收到相应的 JMS 消息(PT已提交?)。
似乎 JTA 不能保证这种一致性(这在 Jurgen Holler 的演示文稿“Transaction Choices for Performance”中也得到了证实)。
避免此类问题的最佳方法是什么(除了明显的 - 不使用 JTA)?
谢谢。
apache-camel - Fuse ESB 7.1.0 上的“无法在 XASession 中回滚()”错误
昨天我尝试将我的包从 ServiceMix 4.4.1 迁移到 Fuse ESB Enterprise 7.1.0。带有本地事务的捆绑包可以正常工作,但其他带有 XA 事务的捆绑包不能正常工作。他们将带有以下消息的连续回溯写入日志文件:
它发生在一个空队列中。
我的 activemq 端点配置如下所示:
该端点在骆驼上下文中非常容易使用,如下所示:
如果有人可以帮助我解决这个问题,我会很高兴。如有必要,我可以提供更多细节。
编辑
似乎问题与 JMS 连接池有关:当我将连接工厂更改为简单的 ActiveMQXAConnectionFactory 时,异常消失了。
activemq - XA 事务真的是原子的吗?
看来我并不完全理解 XA 事务是如何工作的。我认为它是原子的:我认为当我提交事务时,新消息和新数据将同时可用。
这种误解导致我遇到以下问题:将新行插入 DB,并将消息发送到事务路由中的队列。在另一条路线中接收到消息。然后,此路由尝试对插入前一个路由的行执行一些操作。但它没有看到它们!
配置第二条路由,以便在发生异常时将消息回滚到队列。而且我看到在第二次运行后,路线会看到行!
作为结论,我会问下一个问题:
- XA 事务真的是原子的吗?
- 如果不是,我如何为我的事务资源配置提交顺序?
附加说明:该问题在 Fuse ESB/ServiceMix 4.4.1 中发现
2 Jake: 我的骆驼上下文配置如下所示:
DB数据源配置如下:
java - 使用 JPA / Hibernate / MySQL 测试 JTA XA 分布式事务
我的目标是拥有一个独立的解决方案,用于使用 JPA over Hibernate over MySQL 为本地和分布式事务构建 JUnit 测试。
到目前为止,我已经能够使用 XADataSource 访问 XAResource 并按照 2 阶段提交协议管理分布式事务。但是,我必须直接发出 SQL 语句。
我一直在尝试做同样的事情,但使用 JPA 2.0 持久性。我正在使用 simple-jndi 来实现内存中的 JNDI。
但是,每当 Hibernate 尝试访问 TransactionManager 时,我都会收到 NullPointerException。
有任何想法吗?我的配置中缺少什么?
这是我想做的事情:
这是persistence.xml:
jdbc - aries 事务管理器何时关闭 jdbc 连接?
我不完全了解 aries 事务管理器在 FUSE ESB 7.1.0 中的工作方式。如果有人可以解释以下情况,我会很高兴。
我在我的包中使用了 jdbc XADataSource (org.postgresql.xa.PGXADataSource),这就是我所看到的:当在事务路由中处理消息并更改位置时,aries 事务管理器似乎没有关闭 jdbc 连接提交给数据库。连接处于空闲状态。但过了一段时间,它们终于关闭了。
当我尝试使用连接池时,这导致我遇到了很大的问题:应用程序非常快地耗尽了连接池,并且所有打开的连接都处于忙碌状态。
我有关于 aries 事务管理器的下一个问题:
- 它什么时候关闭 jdbc 连接?
- 当处理消息并提交更改时,如何告诉它关闭 jdbc 连接?
java - 远程 XA JMS 连接
是否可以在 JBoss AS 7 上提供和查找事务性连接工厂?标准的“RemoteConnectionFactory”似乎不是事务性的(XA),我不知道如何使其成为 XA 或如何定义某种可以从远程客户端使用的 XARemoteConnectionFactory。
我尝试添加<xa>true</xa>
元素(在 hornetq 配置中有效,但在 jboss 配置文件中是非法的)并尝试创建<pooled-connection-factory>
类似“java:/jmsXA”的元素(但我无法在上下文中查找它,即使使用用于导出的正确名称)。
spring - 有人说你可以用 Spring + hibernate 处理任何全局(XA)事务,对吗?
有人说你可以用 Spring + hibernate 处理任何全局事务,对吗?
其他人说您还需要一个应用程序服务器 XA 数据源或另一个 XA JTA 实现,如 atomikos 或 JbossTS 或 Bitronix。
哪些人是正确的?
A)spring + hibernate
B)spring + hibernate + 另一个 XA JTA 实现?