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

通过Spring Boot使用Atomikos trasaction manager实现跨远程REST服务的分布式事务

漆雕彦
2023-03-14
WARNING: Invalid extent found - any remote work will time out and rollback.
java.lang.IllegalArgumentException: Expected an extent but found none. The remote work will not be committed by us.
      at com.atomikos.remoting.DefaultExportingTransactionManager.addExtent(DefaultExportingTransactionManager.java:70)
Client client1= newClient().register(JacksonJsonProvider.class)
        .register(ParticipantsProvider.class)
        .register(TransactionAwareRestClientFilter.class);
Client client2 = //same as client1
UserTransactionManager utm = new UserTransactionManager();
utm.init();
utm.begin();
callService1();
callService2();
utm.commit();
utm.close();

服务

@EnableTransactionManagement
@SpringBootApplication
public class SpringBootAtomikosExampleApplication {
    //..    
    @Bean(initMethod="init", destroyMethod="close")
    public AtomikosDataSourceBean dataSource() {
        AtomikosDataSourceBean ds = new AtomikosDataSourceBean();   
        //..
        return ds;
    }
}

@Transactional
@RestController
public class MyController {

    @RequestMapping("/test")
    public void test() throws Exception {   
        TransactionManager tm = new UserTransactionManager();
        tm.begin();
        try (Connection con = dataSource.getConnection();
            Statement s = con.createStatement();) {
            s.executeQuery("select count(*) from menu");
        }
        tm.commit();
    }
}

我发现了一些模糊的信息,说明在spring boot中,您应该使用Atomikos ExtremeTransaction而不是TransactionEssentials,但我不确定这是否是解决方案。

共有1个答案

太叔志尚
2023-03-14

你在用

  • com.atomikos.remoting.spring.rest.TransactionAwarerEstContainerFilter
  • com.atomikos.remoting.spring.rest.TransactionAwarerEstClientInterceptor

上课?

 类似资料:
  • 我知道最好使用 Saga 模式,但想想还是很有趣的: < Li > 2PC/XA分布式事务是否提供了仅从一个应用程序和一个TM与多个RM进行事务的可能性? < li >如果没有-如果每个微服务只能访问自己的数据库,如何在多个微服务之间使用2PC/XA分布式事务来提供使用2PC的能力?我很乐意看到一个例子 < li >我们是否需要将TransactionManager服务作为一个独立的微服务,在多个

  • 假设我们有一个用户、Wallet REST微服务和一个将事情粘合在一起的API网关。当Bob在我们的网站注册时,我们的API网关需要通过用户微服务创建一个用户,通过钱包微服务创建一个钱包。 下面是一些可能出错的场景: > 用户Bob创建失败:没关系,我们只需向Bob返回一个错误消息。我们使用的是SQL事务,所以没有人在系统中看到Bob。一切都很好:) 创建了用户Bob,但在创建钱包之前,我们的AP

  • 本文向大家介绍Springboot-dubbo-fescar 阿里分布式事务的实现方法,包括了Springboot-dubbo-fescar 阿里分布式事务的实现方法的使用技巧和注意事项,需要的朋友参考一下 大家可以自行百度下阿里分布式事务,在这里我就不啰嗦了。下面是阿里分布式事务开源框架的一些资料,本文是springboot+dubbo+fescar的集成。 快速开始 https://githu

  • 本文向大家介绍SpringBoot+Dubbo+Seata分布式事务实战详解,包括了SpringBoot+Dubbo+Seata分布式事务实战详解的使用技巧和注意事项,需要的朋友参考一下 前言 Seata 是 阿里巴巴开源的分布式事务中间件,以高效并且对业务0侵入的方式,解决微服务场景下面临的分布式事务问题。 事实上,官方在GitHub已经给出了多种环境下的Seata应用示例项目,地址:https

  • 我有两个微服务和调用来更新数据,然后插入另一个数据,但让我们考虑一下 失败,然后我们需要回滚由 更新的数据,否则我们将处于不一致的状态。 我也经历了佐贺patterns.will它满足了这种矛盾 谁能为此提出更好的解决方案?

  • 24.3 使用Hessian通过HTTP远程调用服务 Hessian提供一种基于HTTP的二进制远程协议。它由Caucho开发的,可以在 http://www.caucho.com 找到更多有关Hessian的信息。 24.3.1 为Hessian和co.配置DispatcherServlet Hessian使用一个自定义Servlet通过HTTP进行通讯。使用Spring的DispatcherS

  • Spring Boot通过使用Atomikos或Bitronix嵌入式事务管理器支持跨多个XA资源的分布式JTA事务。 部署到合适的Java EE Application Server时,也支持JTA事务。 检测到JTA环境时,Spring的JtaTransactionManager用于管理事务。 自动配置的JMS,DataSource和JPA bean已升级为支持XA事务。 您可以使用标准的Sp

  • 最近在学微服务的分布式事务,不太明白为什么在微服务这种分布式系统中,原有的单体acid会出现问题 希望大佬们可以讲一下原理和思想