【问题标题】:2 Phase commit in tomcat using JPA2 使用 JPA 在 tomcat 中的阶段提交
【发布时间】:2013-07-15 07:29:35
【问题描述】:

我在 Tomcat 中部署了一个应用程序,其中后端 oracle 和 JPA 作为持久性管理器。现在我们正在引入一个中间数据库(很可能是 SolidDB 或 TimesTen),这将带来 2 阶段提交的额外要求。由于 tomcat 不支持 J2EE,我们将无法使用常规方法。使用 Atomikos 怎么样。有没有其他支持tomcat的事务管理系统。我们的应用程序一天的峰值负载将达到 4000 万条记录。使用 Atomikos 可靠吗?欢迎任何其他建议。

【问题讨论】:

  • 这可能是术语混淆,但大多数 DBMS,如 Oracle 实现两阶段提交 (2PC)
  • 我需要为 2 个不同的数据库(比如 Oracle 和 Solid DB)实现 2PC。所以在 oracle 中内置的 2PC 可能无法正常工作
  • 我认为更适合您的情况的术语是分布式事务(多资源事务)

标签: tomcat jpa 2phase-commit


【解决方案1】:

独立 JTA 有几个选项,

看, Atomikos vs JOTM vs Bitronix vs?

您还应该考虑使用 Java EE 服务器。

对于 EclipseLink,它支持 JOTM 和大多数 Java EE 服务器。要与另一个集成,您只需继承 JTATransactionController。

【讨论】:

    【解决方案2】:

    一个解决方案是在不使用 Atomikos 或 JOTM 或 Bitronix 的情况下实现的。它是通过使用 AOP 和 JPA 来实现的。我们正在定义 2 个实体管理器工厂和 2 个事务管理器。使用 Spring AOP,我们将两个事务管理器应用于相同的功能。因此,每当出现异常时,rollbacl 将由 2 个事务管理器完成。 它在下面给出的链接中进行了解释 http://tiwarij2eeblog.blogspot.com/2010/12/handling-transaction-with-multiple.html

    【讨论】:

    • 所描述的解决方案无法正常工作。两个事务中的一个将在另一个之前提交,如果第二个提交失败,第一个事务不会回滚。
    猜你喜欢
    • 2012-07-20
    • 1970-01-01
    • 2021-10-08
    • 2013-12-07
    • 2020-03-22
    • 2012-01-20
    • 2011-11-15
    • 2012-06-27
    相关资源
    最近更新 更多