问题标签 [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 投票
2 回答
15944 浏览

java - javax.jms.ConnectionFactory 和 javax.jms.XAConnectionFactory 的区别

由于需要分布式事务,我正在进入 JTA 的世界,我不确定之间的差异javax.jms.ConnectionFactoryjavax.jms.XAConnectionFactory或者更准确地说,它如何javax.jms.ConnectionFactory执行我期望只能javax.jms.XAConnectionFactory为我做的事情。

详细信息:我使用 Atomikos Essentials 作为我的事务管理器,并且我的应用程序在 Apache Tomcat 6 上运行。

我正在运行一个带有虚拟应用程序的小型 POC,其中我的 JMS 提供程序 ( OpenMQ) 注册为JNDI资源。

奇怪的问题是,在我的代码中我这样做:

后来在代码中,我在 a 中使用了这个会话,它在两个带有or 或的 s 中UserTransaction完美地执行。MessageProducerCommitRollback

我不明白的是,我怎么会使用javax.jms.XAConnectionFactory.createConnection()方法并且我得到了一个Session可以完成工作的方法?有什么javax.jms.XAConnectionFactory作用?

我还要补充一点,我已经查看了两个类(和javax.jms.BasicConnectionFactory)的源代码,并且我验证了 XA 类不会覆盖createConnection.

0 投票
1 回答
3168 浏览

java - 我可以在 commit() 之后重用 UserTransaction 实例吗?


下面代码中对 ut 实例的重用是否正确?

当 JNDI 资源这样定义时:

我不确定是否需要添加另一个查找,以便在开始新的 UserTransaction 之前从工厂检索新的 UserTransaction?

我认为这无关紧要,但正如资源定义所述,我使用 Atomikos 作为我的事务管理器(因此它是工厂作为工厂)。

谢谢,
伊泰

0 投票
1 回答
2162 浏览

java - UserTransaction 的“TERMINATED”状态在 Atomikos 日志上意味着什么?


我在我的 J2SE 应用程序中使用 Atomikos 基本事务作为我的 TM。
我有以下代码:

然后我在日志中看到以下异常:

java.lang.IllegalStateException:TM_UNIQUE_NAME0003000006 不再处于活动状态,但处于TERMINATED状态 在 com.atomikos.icatch.imp.CoordinatorImp.addParticipant(CoordinatorImp.java:615) 在 com.atomikos.icatch.imp.TransactionStateHandler.addParticipant(TransactionStateHandler.java:133) 在 com.atomikos.icatch.imp.TransactionStateHandler.committed (TransactionStateHandler.java:347) 在 com.atomikos.icatch.imp.TransactionStateHandler.commit(TransactionStateHandler.java:298) 在 com.atomikos.icatch.imp.CompositeTransactionImp.doCommit(CompositeTransactionImp.java:319) 在 com.atomikos。 icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:79) 在 com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:236) 在 com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java: 496) 在 com.mycompany.module 的 com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:129)。view.myOtherClass.transformMpr(myOtherClass.java:57) at java.util.Observable.notifyObservers(Unknown Source) at com.mycompany.module.model.myClass.notifyObservers(myClass.java:291) at com.mycompany.module。 model.myClass.MultiStateEscalation.run(myClass.java:91) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util .concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) at java.util.concurrent。 ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread。运行(未知来源)

其中第 57myOtherClass行是我commit()在上述代码中调用的行。userTransaction 是UserTransaction.
我不明白的是TERMINATED是什么意思?我在 Atomikos 发行版中找不到这些类(这很奇怪,因为它们是开源的,而且我还对所有源代码进行了文本搜索)并且终止不是javax.transaction.Status.
有人遇到过这种情况吗?如何检查我持有的 userTransaction 是否对提交有效?

谢谢,
伊泰

0 投票
3 回答
3529 浏览

java - Java:许多线程内的 XA 事务传播

如何在 Java SE(不是 Java EE 或 Spring)中使用事务管理器(例如BitronixJBoss TSAtomikos)来支持以下用例:

假设我们有以下类:

然后我们从中创建一个 Java Runnable,如下所示:

现在在我们的服务层,我们有另一个类:

客户端可以是 Servlet 或任何其他多线程环境:

BEGIN TRANSACTION 和 END TRANSACTION 部分的正确代码是什么?这甚至可行吗?如果不是,需要改变什么?要求是保持 updateDatabases() 方法并发(因为它将同时访问多个数据库)和事务性。

0 投票
3 回答
6539 浏览

java - 如何编写一个 oracle 函数来更新不同模式上的表

您好,我正在将 wbsphere 应用程序移植到 tomcat,我必须在同一台服务器上处理两个数据库,并且我已经将 tomcat 与 atomikos transactionessential 集成。这是我的第一个 jta 项目,oracle dba 告诉我我不需要 xa 和两阶段提交,因为模式位于同一台服务器上。所以我在atomikos 中使用了非xa 方法。单个架构上的以下代码可以正常工作(按预期提交和回滚):

在另一个地方,调用以下 oracle 函数并尝试更改这两个模式,并返回代码 1 。我不知道 pl-slq 但在我看来,返回值意味着第一次 delete 出现异常,但第二次 delete 被执行并提交。有人可以解释一下这个功能的含义吗?下面是函数和调用它的代码

预先感谢您的任何帮助

编辑:进一步调查这个(可怕的)代码,多亏了你的回答,我在臭名昭著的“eseguiSP”中找到了这个:

我已将其更改为:

现在它工作正常(或至少返回 0)。为什么旧代码总是返回 1,即使它从 raccomandata_out 中删除了记录?

0 投票
1 回答
2830 浏览

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 配置:

0 投票
1 回答
3490 浏览

classcastexception - Atomikos AtomikosJTATransactionFactory 给出 ClassCastException

我试图在我的代码中实现 Atomikos 事务管理器,它是 Hiberate 之上的 JPA。我收到这个错误。任何帮助都非常感谢。:

这些是我的配置:

持久性.xml

持久性配置.xml

0 投票
0 回答
707 浏览

java - 使用 Infinispan 在同一过程中进行隔离

我正在围绕 Infinispan 缓存和 Atomikos 事务管理器构建应用程序。我发现事务隔离不适用于在同一 JVM 上的两个不同线程中打开的事务。

使用以下代码实例化缓存:

Withthis.tmLookuporg.infinispan.transaction.lookup.TransactionManagerLookup返回配置 Atomikos 事务管理器的简单实现。

我通过使用单个值填充缓存来设置一个小测试,然后在两个线程中启动一个读取器和一个写入器,每个线程都在一个单独的事务中。基本上,写入器将获取存储在缓存中的值,更改值并将其保存到缓存中。另一方面,使用 get 读取并在不同阶段显示值:在 writer 执行任何更改之前,在 writer 更改 pojo 之后,在 writer 保存更新的 pojo 之后,最后在 writer 事务提交之后.

编写器代码是:

阅读器代码为:

为了跟踪缓存返回的实体,我这样实现了 Pojo toString()

由于缓存被配置为隔离,我希望在读取器和写入器之间有不同的 pojo 实例,并且只有在写入器的事务提交后才能看到更改。

但是我得到了以下输出:

所以基本上,缓存就像一个哈希图一样执行,因为它为两个线程返回相同的 pojo 实例。

问题是我是否错过了配置或预期行为中的某些内容?

我很确定事务管理器正在工作,因为我可以从 Atomikos 获取日志消息,指示读取器和写入器上不同事务的开始。

但是,我使用 Ehcache 而不是 Infinispan 尝试了相同的测试,得到了预期的结果。比较两个测试之间的日志,我发现了类似的消息,唯一明显的区别是 Infinispan 没有事务 ID:

对比

0 投票
1 回答
1318 浏览

spring - Atomikos + Infinispan + Jetty 错误

我在码头上使用带有休眠、atomikos 和 infinispan 的 Spring。将任何实体注释为 @Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) 后出现以下错误

似乎问题在于 atomikos 和 infinispan 之间。我的配置基于文档示例。但是在https://docs.jboss.org/author/display/ISPN/Implementing+standalone+JPA+JTA+Hibernate+application+outside+J2EE+server+using+Infinispan+2nd+level+cache他们说要添加 2要配置的属性,但hibernate.jndi.class 我可以在码头下设置什么?

0 投票
3 回答
2892 浏览

java - Atomikos vs. Bitronix vs. JBossTS - MVCC 和嵌套事务

我想实现以前的事务管理器之一。但是,由于我仍处于概念阶段,我想尝试所有这些事务管理器。我最终选择的标准是易用性、Tomcat的使用、适应性以及最重要的是对嵌套事务和 MVCC 的支持。

我找不到任何有关可能支持 Bitronix 和 Atomikos 的后者标准的信息。

我知道 JBossTS 支持 MVCC 和 NT - 但我不确定 JBoss 是否会是一个不错的选择,因为 JBoss 的使用会带来巨大的开销......尤其是对于 Spring 和 hibernate 的用户。

您知道 Atomikos 和/或 Bitronix 是否符合我的标准 - 还是实施我自己的 TM 会更好?