【发布时间】:2010-06-04 22:30:49
【问题描述】:
我是 JTA 的新手,它是底层事务管理器。任何人都可以解释每一个的优点/缺点吗?随意添加我未在标题中列出的其他内容。
另外,主要的应用服务器(WebSphere、JBoss、Glassfish)难道没有自己的符合 JTA 的事务管理器吗?在那些环境中,您还会使用这些第三方实现吗?
【问题讨论】:
标签: java transactions jakarta-ee jta
我是 JTA 的新手,它是底层事务管理器。任何人都可以解释每一个的优点/缺点吗?随意添加我未在标题中列出的其他内容。
另外,主要的应用服务器(WebSphere、JBoss、Glassfish)难道没有自己的符合 JTA 的事务管理器吗?在那些环境中,您还会使用这些第三方实现吗?
【问题讨论】:
标签: java transactions jakarta-ee jta
我是 JTA 的新手,它是底层事务管理器。任何人都可以解释每一个的优点/缺点吗?随意添加我未在标题中列出的其他内容。
我知道的独立事务管理器包括 Bitronix、SimpleJTA、Tyrex(已死?)、JOTM(用于 Jonas)、GeronimoTM/Jencks(用于 Geronimo)、JBossTS(在 JBoss 中使用)和Atomikos。
我从未对它们进行过广泛的测试(如果你必须选择一个,这就是你必须做的),所以我无法提供详尽的优缺点(这需要一些工作)。但这里有一些链接:
以防万一,这是我非常个人的观点:
就我个人而言,如果我必须选择其中一个,我会将 Atomikos 和 JBossTS 列入候选名单并进行硬核测试。
另外,主要的应用服务器(WebSphere、JBoss、Glassfish)难道没有自己的符合 JTA 的事务管理器吗?
当然可以,JTA 是 Java EE 规范的一部分,Java EE 服务器必须支持它。
在那些环境中,您还会使用这些第三方实现吗?
不,我会使用提供的事务管理器(为了简单、支持等)。
【讨论】:
我已经使用 Jetty 测试了 Atomikos 和 JOTM。 Atomikos 工作得很好,我完全推荐它。我做了例如用于在我的应用程序中测试分布式事务的自动化单元测试,这些测试运行良好。
就 JOTM 而言,我很确定它至少有时会伪造 2 阶段提交协议。我有一个关闭了两阶段提交功能的 PostgreSQL 数据库,并且 JOTM 能够像我有真正的分布式事务一样工作。真正的事务管理器(例如 GlassFish 中实现的)在这种情况下会报告错误。
如果重要的话,我在我的应用程序中使用了 JPA2 和 Hibernate 4。
【讨论】: