当前位置: 首页 > 知识库问答 >
问题:

MySQL和Infinispan-JTA实现

芮宇航
2023-03-14

我们在Tomcat下有一个web应用程序,它集成了Hibernate4x、Spring4x和HibernateTransactionManager作为我们的事务管理器(目前是一个MySQL资源)。

作为配置分发的一部分,我们应该与Infinispan集成作为缓存管理器,以其他格式存储配置,而不是在MySQL中。意思是,不要像Hibernate那样集成二级缓存!

我设法将Infinispan与Spring集成,但现在我面临一个大问题,因为MySql事务和Infinispan必须在同一个@Transactional上。

我阅读了有关Spring JTA以及如何与Atomikos集成(例如)作为我们的全局事务管理器,但我不确定我们是否可以将整个实体组合在一起工作以及如何:(

我需要知道是否有一个选项可以使用原子SpringJTA,以便Infinispan将识别此JTA实现并将MySql和Infinispan作为一个全局事务处理!(2PC)

谢啦!

共有1个答案

施晗日
2023-03-14

首先,我建议一起配置Spring Hibernate JTA。这是一个非常好的教程。如果您正确配置了所有内容,那么您应该拥有一个类型为TransactionManager的bean。在上述教程中,它在该块中配置:

@Bean(initMethod = "init", destroyMethod = "close")
public TransactionManager transactionManager() throws Throwable {
  UserTransactionManager userTransactionManager = new UserTransactionManager();
  userTransactionManager.setForceShutdown(false);
  return userTransactionManager;
}

现在,您可以将Infinispan配置为使用此事务管理器。实现这一点的最简单方法是实现您自己的TransactionManagerLookup。这将返回上面创建的事务管理器。

最后,您必须创建事务缓存,如下所示:

<local-cache name="transactional">
    <transaction mode="FULL_XA"/>
</local-cache>

之后,所有内容都应该与同一个事务管理器一起使用,Spring应该在单个@Transactional注释中处理所有内容。

 类似资料:
  • Infinispan留档说了很多关于它的锁定方案的东西,乐观的和悲观的,但是没有详细说明如何使用事务。可能它被认为是知道的,因为它使用Java的默认API,但是如果是这样,我也没有找到关于JTA使用模式的信息。 我假设,在使用乐观事务时,它将被提交或回滚,这取决于对数据的并发访问。如果回滚,我将能够重播事务,希望现在它将在其他并发访问之前完成,并将成功。我在TransactionManager上有

  • 问题内容: 我试图将hibernate实体管理器与mysql和glassfish一起使用。尝试使用JTA数据源时出现以下错误: 这是我配置persistence.xml的方法 但是,当我配置非jta数据源时,它可以正常工作 很好,但是我真的很想使用: 代替: 我是否在hibernate配置中缺少某些东西,或者甚至可以使用JTA数据源? 问题答案: 在您的配置中,默认情况下使用容器管理的事务。在这种

  • 我使用的是spring batch 2.1.9。这个版本支持JTA事务吗?我有一个批处理作业定义,它有多个步骤。这些步骤中只有一个与工作单元中的多个数据源交互。 是否可以将JtaTransactionManager应用于这一步骤?当spring batch试图更新表中的元数据信息时,我发现了以下异常。 如果不是step,如果我在作业级别设置JtaTxnMgr,它会工作吗?我会避免这种情况,因为其他

  • JTA

    JTA - Telnet/SSH for the JAVA(tm) platform JTA 是采用 Java 开发的一个远程登录的客户端软件,支持包括 Telnet 和 SSH 协议。

  • 我正在开发一个以JPA(Hibernate)为后端的应用程序。我对每个实体都有一个DAO和JPADAO,我的流程将不止一个实体作为一个工作单元进行更新,所以我决定使用JTA,因为它允许我控制事务,所以我的代码看起来是持久的。xml 现在,当我尝试开始一个事务并将更改提交给实体(不止一个)时,它会抛出和异常,并调用utx。回滚但不会回滚它只提交了部分事务,并没有保存所有实体

  • Infinispan 是个开源的数据网格平台。它公开了一个简单的数据结构(一个Cache)来存储对象。虽然可以在本地模式下运行Infinspan,但其真正的价值在于分布 式,在这种模式下,Infinispan可以将集群缓存起来并公开大容量的堆内存。这可比简单的复制强大的多,因为它会为每个结点分配固定数量的副本——服 务器故障的一种恢复手段——同时还提升了可伸缩性,这是由于存储每个结点所需的工作量是与集群