springcloud LCN 分布式事务升级到 springboot 2.0

springcloud分布式事务处理是个棘手问题,LCN是一个个解决方案。但有个小问题,如果使用的是springboot 2.0版本的话,就会出问题,因为LCN现在还是基于springboot1.5.4的版本,还好LCN是开源项目,可以获取到源码(https://gitee.com/wangliang1991/tx-lcn),稍作改动就可以升级到springboot2.0上了。具体操作如下(只针对springcloud升级):

一、transaction-springcloud项目改动:

1、pom只需改动两个属性及feign的依赖:
    
        2.0.0.RELEASE
        5.0.7.RELEASE
    

    
            org.springframework.cloud
            spring-cloud-starter-openfeign
            ${spring-cloud.version}
            
                
                    com.google.guava
                    guava
                

            

        

2、com.codingapi.tx.springcloud.listener.ServerListener改动:

    import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;
    改成:
    import org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent;
    相应代码改动:
    public class ServerListener implements ApplicationListener<ServletWebServerInitializedEvent> {
    @Override
    public void onApplicationEvent(ServletWebServerInitializedEvent event) {
        logger.info("onApplicationEvent -> onApplicationEvent. "+event.getWebServer());
        int serverPort = event.getWebServer().getPort();

二、tx-manager改动:

1、pom改动:

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.3.RELEASE
       
   

2、com.codingapi.tm.ServletInitializer改动:

   import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

3、com.codingapi.tm.listener.ApplicationStartListener改动:

    import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent;
    改成:
    import org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent;
    相应代码改动:
    public class ApplicationStartListener implements ApplicationListener<ServletWebServerInitializedEvent> {
    @Override
    public void onApplicationEvent(ServletWebServerInitializedEvent event) {
        int serverPort = event.getWebServer().getPort();

三、tx-client改动:

   只需改一下pom:
   5.0.7.RELEASE

三、如何应用:

   1、先将tx-client、transaction-springcloud、tx-plugins-db三个项目打包。

   2、启动tx-manager,要应用LCN的springcloud项目增加依赖,示例如下(我改了一下整个项目的version为4.1.1-hk):

   
       
            com.alibaba
            fastjson
            1.2.51
       

       
            com.github.1991wangliang
            lorne_core
            1.0.0
           
               
                    org.slf4j
                    *
               

           

       

       
            com.codingapi
            tx-client
            4.1.1-hk
            system
           
                ${project.basedir}/lib/tx-client-4.1.1-hk.jar
           

       

       
            com.codingapi
            transaction-springcloud
            4.1.1-hk
            system
           
                ${project.basedir}/lib/transaction-springcloud-4.1.1-hk.jar
           

       

       
            com.codingapi
            tx-plugins-db
            4.1.1-hk
            system
           
                ${project.basedir}/lib/tx-plugins-db-4.1.1-hk.jar
           

       

你可能感兴趣的:(烂笔头)