SpringBoot(2.0以上版本)集成LCN注意事项

正文

因为项目是SpringBoot+SpringCloud的,需要集成LCN完成分布式事务的管理,在集成的时候,遇到了一些问题,特地记录下来。

问题描述

错误代码

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; 
nested exception is java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

解决步骤

因为LCN使用了JPA2.0的方法,所以要把JPA1.0过滤掉,引入JPA2.0的包


        
            tk.mybatis
            mapper-spring-boot-starter
            
                
                    javax.persistence
                    persistence-api
                
            
        
        
            org.hibernate.javax.persistence
            hibernate-jpa-2.0-api
            1.0.1.Final
        

注意

1、数据库表结构必须为innoDB
2、在启动类上一定要加入@EnableDistributedTransaction
3、当调用其他服务时@LcnTransaction注解不能加入其他参数
4、被调用的服务@LcnTransaction注解一定要加入propagation = DTXPropagation.SUPPORTS这个配置
5、注意配置TM(事务管理器)TC(客户端,每个涉及到分布式事务的微服务都要配置),详见[官网配置手册]
(http://www.txlcn.org/zh-cn/docs/setting/client.html)
6、注意,通过feign调用的参与方,要在熔断器的实现加入

DTXUserControls.rollbackGroup(TracingContext.tracing().groupId());

SpringBoot(2.0以上版本)集成LCN注意事项_第1张图片
或者直接取消熔断器的fallBack

结语

参考了网上集成LCN的步骤,没有一个遇到这个问题,也不知道是我脸黑,还是我集成的步骤不对,不过好在最后还是把LCN跑了起来。

你可能感兴趣的:(JAVA)