问题标签 [atomikos]

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 回答
891 浏览

database - 是否可以在 JTA (Atomikos) 中设置并行事务

我有两个事务资源,数据库和消息队列。所以我使用 Atomikos 作为 XA 事务管理器。

在一个事务(tx1)中,是否可以并行打开另一个单独的事务(tx2)?

在 tx2 中,它会将一些数据提交到 db 中,即使 tx1 可能最终失败并回滚。

并且 tx2 必须在 tx1 内部完成,好像 tx2 发生错误也应该回滚 tx1。

任何人都知道我怎么能做到这一点?

谢谢你。

0 投票
1 回答
567 浏览

java - 没有 JDBC 的 Atomikos 或 JBossTS

如果无法通过 JDBC 调用数据源,是否可以实现以前的事务管理器之一?

已编辑

我想为现有应用程序创建一个插件。我的插件将负责记录长期工作流事务的读写访问。我的插件应该另外负责缓存变量以防需要它们 - 这样每次访问变量时都不必进行读/写操作。

该应用程序在 Tomcat6 环境中运行,我通过调用插件管理器(它保存从不同数据源获取数据)来获取数据。

您知道我可以阅读的任何链接 - 或者可能知道一些现有的解决方案吗?

0 投票
2 回答
4430 浏览

java - 如何在 Sybase 中正确调用存储过程

我正在尝试使用 Spring JDBC 在 Sybase 数据库 (ASE 15) 上调用一些遗留存储过程。

我已经让它工作得很好,但我不知道如何从 proc 中获取返回值。

这是我得到的代码:

存储过程不是很重要,但它会进行更新并始终返回 0。如果我使用一些 db 工具运行相同的查询,我会正确得到 0。

更新有效,表被更改,返回值为 3。对我来说,这看起来完全随机。

我这样做对吗?有什么我想念的吗?

如果这很重要,我正在使用 Sybase 的专有驱动程序 jConnect 7。

谢谢。

0 投票
2 回答
2280 浏览

spring - 如何让我的集成测试中的 Spring 事务管理器真正具有事务性?

我有一个小型 Spring 应用程序,它读取几个数据库,并在一个数据库中写入一个小表。我有一个带有@Transactional 方法的@Service 注释类。该方法调用 DAO 类(不是 @Repository 注释的)中的方法,该方法首先从表中删除一些行,然后将行插入到同一个表中。

这将部署到 WebLogic。在正常操作下,此应用程序运行良好。

我尝试了一个故意为“insert”添加SQL的实验,并将其部署到我的本地盒子,然后执行执行此服务操作的JMX操作。失败后(预期)我检查了数据库,并确认表完好无损,因此当“插入”失败时它正确回滚了“删除”。

我的问题是我试图模拟类似场景的集成测试没有表现出事务性。我模拟了 JdbcTemplate,所以它执行了删除,但强制它在插入时抛出 DataAccessException。之后,我检查了数据库,行都不见了,所以它并没有像我希望的那样回滚删除。

我在 Spring JTA 包中打开了调试,我看到调试消息打印,说它正在回滚事务。

我正在使用 Atomikos 事务管理器进行测试。以下是我在测试中用于定义“catalogTransactionManager”的上下文的摘录,它是在上下文的其余部分中引用的内容。

可能没关系,但这是我的测试方法(有些东西被混淆了):

}

请注意,虽然当我部署到 WebLogic 时,我定义了一个普通的连接池事务数据源,但在我的集成测试中,数据源使用了“org.springframework.jdbc.datasource.DriverManager 数据源”。

我可能会错过什么?

仅仅是因为免费的 Atomikos 事务管理器不是真正的事务性的吗?我可能会错过什么?

0 投票
2 回答
2045 浏览

hibernate - DAO 中的交易使用情况

我正在使用带有 Atomikos 和 Spring 3.1 的 Hibernate 3.6.9。看完@Transactional注解属于哪里?我已经从所有 DAO 中删除了 @Transactional 注释,并且只将它们留在了 Service 中。在我收到的任何 dao db 操作上删除这些注释后

我的配置:

会话工厂属性:

我应该如何管理 DAO 的事务,以及如何在 Service 之外使用 DAO?解决此问题的唯一方法是在使用 daos 的任何层中手动启动事务(具有传播需要新的事务)?但是,在将事务与 DAO 一起使用时,我遇到了延迟初始化异常的问题(事务在表示层之前关闭 - 尝试初始化实体字段)。

编辑:

当spring mvc的控制器可以直接访问DAO时我应该如何管理事务?控制器应该是事务性的吗?

我的问题在登录过程中也出现了,因为spring security使用dao(没有@Transactional)所以没有层启动事务?

将@Transactional 添加到spring security 使用的例如daos 可以解决问题-> 当有@Transactional 时一切正常,但是如果没有此注释,则无法使用db。但是给一些DAO加上@Transactional会带来问题,因为spring mvc要显示一些数据的时候会出现延迟初始化异常,然后dao中只有手动Hibernate.initialize起作用(因为最后@Transactional在表现层之前关闭事务!)。

0 投票
2 回答
687 浏览

ejb-3.0 - 编程 BMT - UserTransaction

BMT的完整编程是否基于UserTransaction接口?换句话说,如果我想使用 BMT,是否存在需要比 UserTransaction 接口提供的服务更多的服务的情况。

为什么这么问?如果我使用不同的事务管理器实现(例如 Bitronix TM 或 Atomikos)而不是容器提供的默认值,那么将新的 TM 注入 UserTransaction 对象就足够了吗?

-谢谢

0 投票
1 回答
8982 浏览

spring - Spring IntTest 从 Atomikos 收到“无法增长连接池”

我有一个通常在 WebLogic 中运行良好的 Spring 应用程序。

我有一组使用 Atomikos“Transaction Essentials”框架提供独立事务管理器的集成测试。我有这个工作,但我现在看到了一个新问题,但我不知道我可能做了什么改变才能实现这一点。

我看到这样开始的堆栈跟踪:

org.springframework.jdbc.CannotGetJdbcConnectionException:无法获得 JDBC 连接;嵌套异常是 com.atomikos.jdbc.AtomikosSQLException: 无法在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) 增长连接池

以下是相关的 bean 定义:

我也有几个这样的:

我尝试将“5”更改为“50”。这使其运行时间更长,但仍然失败并出现相同的错误。它甚至不需要 5 个甚至 50 个连接。我有一种强烈的感觉,如果我把它改成更大的数字,它会运行得更久,仍然会失败并出现同样的错误。

我可能会错过什么?

0 投票
1 回答
971 浏览

mysql - XID 的简历提出 0:未知

我正在使用 Spring 3.0.5、Hibernate 3.6.7、Atomikos TransactionEssentials 3.7.0 和 MySQL 5.5

我最近遇到了这个问题,我的连接池中的连接在 8 小时后超时并被服务器重置,导致出现消息“恢复 XID '???' 提出0:未知

这是我的数据源配置:

当我调查时,我发现选项 autoReconnect=true 仅在延迟 2 秒后重新连接我的故障连接(我认为这是可配置的)。浏览网页我发现解决方案建议增加 MySQL-Server 中的 wait_timeout,我认为这不是一个真正的解决方案。应用程序应该能够处理死连接并自动重新连接,因为可能还有其他问题导致连接丢失。(而且无论应用程序使用哪种类型,我都不想对服务器做出任何指令)。

最后我找到了一个很好的解决方案,我将把它作为答案发布,以帮助面临相同或类似问题的人。

0 投票
3 回答
4066 浏览

atomikos - 如何关闭 Atomikos 日志记录?

我在 Redhat Linux 上运行的独立 Java 应用程序 (v1.6) 中使用 atomikos v3.7.0 TransactionEssentials。除了突然之间 atomikos 正在向控制台大量输出日志之外,一切都在顺利进行。我尝试了很多东西,不确定是什么原因造成的,也不知道如何控制它。是的,我已经看到了链接(如何将 Atomikos 设置为不写入控制台日志?))但这对我没有用。Java 应用程序使用消息驱动的 poj 和 spring 的 DefaultMessageListenerContainer,监听消息队列并更新 MySql 数据库。当侦听器启动时,即使没有收到消息并且应用程序应该什么都不做,它也会打印出以下日志:

现在,当侦听器关闭并再次重新启动时,它还会在下面打印日志,以及上面的日志:

协调员的本地启发式终止192.168.252.15.tm1200000016,州进行局部启发式终止,协调器192.168.252.15.tm1200100016与州委托局部启发式终止协调员192.168.252.15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tm15.tristration 2.152.12001000. state COMMITTING 协调器 192.168.252.15.tm1200200016 的本地启发式终止,状态为 COMMITTING

有什么问题吗?我该如何停止?

0 投票
1 回答
1283 浏览

jms - 使用 ActiveMq 和 Atomikos 两次出队 JMS 消息

我使用 ActiveMq 作为 JMS 服务器,使用 Atomikos 作为事务管理器。

在 ActiveMq Admin Web 界面上,我看到一条消息已入队,但有 2 条(!)消息已出队。

但是jms消费者只处理一次消息,没有重复处理。当我使用简单的 Spring JmsTransactionManager 时,有一个入队消息和一个出队消息。该问题仅出现在 Atomikos JTA 事务管理器中。

问题是什么?如何配置 Atomikos 看不到两次出队的消息?

我的配置如下。它几乎与教程中的相同。顺便说一句,Atomikos 的 spring 集成示例运行良好,但它使用 Spring 2.0,而我使用 Spring 3.1。

消费类是: