问题标签 [bitronix]

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.

0 投票
1 回答
121 浏览

java - 将 Solace 与 Bitronix JTA 事务管理器一起使用

目前使用 Bitronix 来管理 JDBC (Oracle) 和 JMS (ActiveMQ)。现在希望将 ActiveMQ 换成 Solace,但找不到任何将 Bitronix 与 Solace 结合使用的示例。只是想知道是否有人有这方面的经验?

谢谢。

0 投票
1 回答
160 浏览

hibernate - 在 Spring Boot 中使用 DB2 的 Bitronix

如果我使用包含 driverType 为 4 的驱动程序属性定义数据源 bean,我的配置工作正常。

如果我让 spring boot 自动配置创建数据源 bean,则默认情况下使用驱动程序类型 2 创建数据源,因为它在驱动程序中是硬编码的。

显式创建 bean 是唯一的方法吗?

0 投票
0 回答
69 浏览

hibernate - 使用 bitronix 和没有 JNDI 的休眠 JTA

是否可以在HibernateJNDI使用和不使用Spring.

persistence.xml需要获取数据源的jta-data-source属性。JNDI

0 投票
1 回答
3167 浏览

spring-batch - 当Reader和Writer使用同一张表时Spring batch Lock

我们正在评估spring batch(3.0.3版),为此我们做了一个简单的数据处理

我们的测试:

我们在一个表中有 500k 行,我们想要处理它,将一个字段更新为“行已处理”的标志

我们的工作定义是这样的:

我们使用 JdbcCursorItemReader 作为读取器(查询如 SELECT field1, field2 FROM table WHERE field3 = '2Process')和 JdbcBatchItemWriter 作为写入器(更新表 SET field3 = 'Processed' WHERE field1 = :field1 和 field2 = :field2)

我们的数据库是一个 DB2/zOS,在我们使用的表中按页配置了锁

我们使用 Bitronix 作为事务管理器

当我们启动它时,我们会得到这个异常:

似乎发生异常是因为读取器的 Tx 与数据库写入器的 Tx 不同。我们在第 201 页有一个块。

显然,如果我们改变select的隔离级别,加上ur,批处理就ok了。

我们的问题是,这个数据库锁可能是事务管理器的问题,因为 bitronix 不支持嵌套事务?或者似乎是db2数据库和定义的锁定策略有问题

此外,我们不知道是否有一个好的做法是使用一个包含读取和写入同一个表的步骤的 spring 批处理

编辑:对不起,你是对的,我的解释中有很大的错误,db2/zOS

0 投票
1 回答
554 浏览

spring - Spring Boot JTA with Artemis Issue

I am trying to use XA Connection of Apache ActiveMQ Artemis for JMS with Spring Boot. My relevant config looks like this:

But this is producing continuous errors in the log which says:

The "executing transaction with 0 enlisted resource" keeps getting printed every 3 milliseconds. How do we get the BTM JTA provider to "see" that it should use the Artemis resource? I have had MySQL based spring boot application working without much fuss but Artemis does not work.

0 投票
1 回答
497 浏览

spring-boot - Bitronix PoolingConnectionFactory 建立多个不会关闭的连接

我们在 Spring Boot 应用程序中使用 Bitronix XA 作为 jta 事务管理器。问题是它建立的多个连接会占用 MQ 服务器上的资源。我们使用 IBM websphere 作为 MQ 服务器。出于某种原因,Bitronix 不尊重我们提供的池大小。另一个观察结果是,当我们同时接收或发送大量消息时,就会发生连接泄漏。下面是代码中的配置。请告知如何解决连接泄漏问题。

池连接工厂:

btm 配置:

SpringIntegrationFlows中使用的消息容器:

用于数据库连接的PoolingDataSource :

0 投票
1 回答
554 浏览

spring-boot - Bitronix - JMS 和 JDBC - 消息因异常而出队

我正在尝试将 Bitronix 事务管理器集成到我的 Spring boot 项目中,以一起管理 jdbc 和 jms 事务。我有两个数据库和一个用于 jms 的 ActiveMQ 代理。我已经在同一个事务中连接了数据库,但是当我尝试包含 JMS 时,它似乎不起作用。

这是我的 Bitronix 事务管理器配置:

这是我的数据库配置类之一:

我的 ActiveMQ 配置类:

我的 JMS 监听器实现:

根据我的侦听器实现,据我了解 Bitronix 功能:

  1. 在第一条传入消息上:必须在每个数据库中插入一行并将消息出列。-> 这工作正常。

  2. 在第二条和第三条传入消息中:由于异常必须插入 0 行并将消息保留在队列中。-> 没有插入行,但消息已出列。

此外,我想补充一点,它在执行过程中记录了以下内容: [main] bitronix.tm.recovery.Recoverer: recovery commit 0 dangling transaction(s) and roll back 0 aborted transaction(s) on 4 resource(s) ) [AMQLocal、vds、AMQRemote、tpds]

因此,我了解到两个经纪人和两个数据库都已注册。但是当侦听器处理第二条消息(它抛出异常)时,它会记录:

WARN 5740 [Session Task-1] bitronix.tm.twopc.Preparer:使用 0 登记资源执行事务

关于这个问题的任何想法?

您可以在以下位置找到完整代码:https ://github.com/PedroRamirezTOR/spring-jms-jdbc-integration.git

谢谢!

0 投票
1 回答
445 浏览

java - Spring-batch - 交易不平衡 - 我如何找出问题所在?

根据弹簧手册https://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/

  • 幸运的是,使用 Spring 可以优雅地避免这种复杂性。

根据现实:

给定一个 Spring 批处理作业,其事务完全由 Spring 容器控制,而我没有故意创建全局事务,我该如何追查此异常的根本原因。

完成第一步后作业失败,下面仅对其进行了轻微清理。

Java 用于应用程序内的启动点:

春季批处理作业的 XML:

0 投票
1 回答
2469 浏览

mysql - 使用 spring-boot 和 bitronix JTA 管理器将 XA 数据源配置为 mysql 8 DB 失败并出现 SqlException XAERR_RMERR

我创建了一个 Spring Boot 2 (2.1.6.RELEASE) 项目,该项目依赖于 spring-boot-starter-data-jpa 和 spring-boot-starter-jta-bitronix,并为 Mysql DB (8.0.16) 配置了 XA 数据源)。

应用程序属性文件(修剪以与 <> 之间的占位符值相关)包含以下配置:

在启动 Spring Boot 应用程序时,我收到以下错误堆栈跟踪:

0 投票
1 回答
47 浏览

java - jdbcConnection 是否有 ExceptionListener 支持,类似于 jmsConnection?

我们使用 XA/分布式事务,如果参与的 xaResource-branch 抛出异常,我正在尝试通知/更新全局事务状态。

一个很好的例子可以在 JMS 中找到Connection#setExceptionListener()(参考链接),它在ExceptionListener. 我在 JDBC 规范中寻找类似的东西,但我找不到任何东西。

XA 事务处理在我们的应用程序中是单线程的,给定的全局事务可以触及多个 xaResource 分支。rA假设 UOW 按,rB和的顺序rC发生,我们可能会在 上运行缓慢的查询rB,导致开始rA前超时rC。由于单线程的性质(以及我们使用的 TM 的限制),rC在全局事务的命运已经确定(回滚)时仍然会继续进行。我们正在尝试通知全局事务rA已经回滚的事实,以便rC可以跳过。

如果 JDBC 规范不提供类似于 JMS 的 ExceptionListener 的功能,我能想到的一个选项是使用异步线程以特定频率测试 JDBC 连接。到目前为止,我发现的最接近的示例在此 PostgreSQL 文档(参考链接)中进行了描述,该文档使用异步线程来测试/轮询 JDBC 连接。它可能满足我的需要,但想知道我在 JDBC 规范中是否遗漏了任何其他选项。