我是JTA的新手,也是基础交易经理。谁能解释每一个的优点/缺点?随意添加我没有在标题中列出的其他人。
此外,主要的应用程序服务器(WebSphere,JBoss,Glassfish)是否拥有自己的JTA兼容事务管理器?在这些环境中,您是否仍会使用这些第三方实施?
答案 0 :(得分:49)
我是JTA的新手,也是基础交易经理。谁能解释每一个的优点/缺点?随意添加我没有在标题中列出的其他人。
我知道的独立事务管理器包括Bitronix,SimpleJTA,Tyrex(已死?),JOTM(在Jonas中使用),GeronimoTM/Jencks (在Geronimo中使用),JBossTS(在JBoss中使用)和Atomikos。
我从来没有对它们进行过全面的测试(如果你必须选择一个,这就是你必须要做的事情)因此我无法提供详尽的优点/缺点(这需要一些工作)。但这里有一些链接:
以防万一,这是我个人的观点:
就个人而言,如果我不得不选择一个,我会将Atomikos和JBossTS列入候选名单并测试它们。
此外,主要的应用程序服务器(WebSphere,JBoss,Glassfish)是否拥有自己的JTA兼容事务管理器?
当然,JTA是Java EE规范的一部分,Java EE服务器必须支持它。
在这些环境中,您是否仍会使用这些第三方实施?
不,我会使用提供的事务管理器(为了简单起见,支持等)。
答案 1 :(得分:6)
我用Jetty测试了Atomikos和JOTM。 Atomikos运行良好,我完全推荐它。我做了例如用于在我的应用程序中测试分布式事务的自动化单元测试,这些测试运行良好。
就JOTM而言,我很确定它至少有时会伪造两阶段提交协议。我有一个PostgreSQL数据库,关闭了两阶段提交功能,JOTM能够像我有真正的分布式事务一样工作。真实的事务管理器(例如在GlassFish中实现的事务管理器)在这种情况下报告了错误。
如果重要的话,我在我的应用程序中使用了JPA2和Hibernate 4。