Atomikos vs JOTM vs Bitronix vs?[已关闭]

2022-09-01 02:35:17

我是JTA的新手,它是底层事务经理。任何人都可以解释其中每一种的优缺点吗?随意添加我没有在标题中列出的其他人。

另外,主要的应用程序服务器(WebSphere,JBoss,Glassfish)不是有自己的JTA兼容的事务管理器吗?在这些环境中,是否仍会使用这些第三方实现?


答案 1

我是JTA的新手,它是底层事务经理。任何人都可以解释其中每一种的优缺点吗?随意添加我没有在标题中列出的其他人。

我所知道的独立事务管理器包括BitronixSimpleJTATyrex(死?),JOTM(用于Jonas),GeronimoTM / Jencks(用于Geronimo),JBossTS(用于JBoss)和Atomikos

我从来没有广泛地测试过它们(如果你必须选择一个,这就是你必须做的),所以我不能提供详尽的优点/缺点(这需要一些工作)。但这里有一些链接:

为了以防万一,这是我的个人观点:

  • 我看到很多关于JOTM的抱怨。
  • 我认为GeronimoTM/Jencks缺乏文档。
  • SimpleJTA不实现JTS,也不活跃。
  • Bitronix是不错的文档,但不提供支持。
  • Atomikos是一款令人印象深刻的产品,有据可查,并且确实提供了支持。
  • JBossTS又名ArjunaTS绝对是一个成熟的产品(请参阅收购公告了解一些历史),并且确实提供支持。

就我个人而言,我会将Atomikos和JBossTS列入候选名单,如果我必须选择一个,我会测试它们的硬核。

另外,主要的应用程序服务器(WebSphere,JBoss,Glassfish)不是有自己的JTA兼容的事务管理器吗?

当然可以,JTA是Java EE规范的一部分,Java EE服务器必须支持它。

在这些环境中,是否仍会使用这些第三方实现?

不,我会使用提供的事务管理器(为了简单,支持等)。


答案 2

我已经用Jetty测试了Atomikos和JOTM。Atomikos工作得很好,我完全推荐它。例如,我进行了自动化单元测试,用于测试应用程序中的分布式事务,这些测试工作正常。

就JOTM而言,我很确定它至少有时会伪造2阶段提交协议。我有一个关闭了2阶段提交功能的PostgreSQL数据库,JOTM能够像我拥有真正的分布式事务一样工作。在这种情况下,真正的事务管理器(例如在GlassFish中实现的事务管理器)报告了错误。

如果重要的话,我在我的应用程序中将JPA2与Hibernate 4一起使用。


推荐