41

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

另外,主要的应用服务器(WebSphere、JBoss、Glassfish)没有自己的符合 JTA 的事务管理器吗?在那些环境中,你还会使用这些第三方实现吗?

4

2 回答 2

51

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

我知道的独立事务管理器包括BitronixSimpleJTATyrex(已死?)、JOTM(在 Jonas 中使用)、GeronimoTM/Jencks(在 Geronimo 中使用)、JBossTS(在 JBoss 中使用)和Atomikos

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

以防万一,这是我非常个人的观点:

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

就个人而言,如果我必须选择一个,我会将 Atomikos 和 JBossTS 列入候选名单并对其进行硬核测试。

另外,主要的应用服务器(WebSphere、JBoss、Glassfish)没有自己的符合 JTA 的事务管理器吗?

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

在那些环境中,你还会使用这些第三方实现吗?

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

于 2010-06-04T23:30:17.733 回答
7

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

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

如果重要的话,我在我的应用程序中使用了 JPA2 和 Hibernate 4。

于 2012-02-16T21:19:35.683 回答