zoukankan      html  css  js  c++  java
  • TX-LCN5.0.2分布式事务框架源码分析-关键线索罗列-txc部分

    1、注解TxcTransaction
    2、在其注解接口附近查找aop配置:TransactionAspect
    3、runTransaction是在执行事务业务代码时的包装逻辑
    4、transactionServiceExecutor.transactionRunning(info);
    5、获取本地分布式事务控制器 loadDTXLocalControl找到TxcRunningTransaction
    6、根据注解和切面配置,resolvePropagationState返回是DTXPropagationState.JOIN
    7、DTXServiceExecutor dtxLocalControl.doBusinessCode(info),直接线索中断
    8、回到刚才切面所在的包,发现还有DataSourceAspect,对数据库连接进行了替换,非常重要,先看看连接的接口有什么东西,想想我们的jdbc写法也是弄一个连接,然后调用其中的各种方法
    9、
    DTXResourceWeaver 对获取db连接进行了封装,其中有执行sql的相关动作改写
    txLcnBeanHelper.loadTransactionResourceProxy(transactionType);
    找到transaction_txc TxcTransactionResourceProxy执行的proxyConnection,继续进入方法
    10、查看ConnectionWrapper其中的commit rollback等对原始的数据库连接进行了替换,有用到jdbcEventListener,分析listener
    11、找到ConnectionHelper其中注入的CompoundJdbcEventListener,这个bean在类名上已经进行了标记,里面用的P6spyJdbcEventListener实际上是TxcJdbcEventListener
    12、随便看个update 63行看看拦截的处理sqlExecuteInterceptor.preUpdate((Update) statement);粗看其中的代码,有一段前置准备,最后96行txcService.resolveUpdateImage(updateImageParams);
    13、粗看resolveUpdateImage其中代码,就是对影响范围进行分析,然后保留undo数据(195行方法内部162行)
    14、到此基本我们可以验证之前的txc的理论,刚才部分分析比较粗略,大家有时间可以自己细看

  • 相关阅读:
    (10)时间
    (9)字符串
    (8)数组工具类
    (7)数学工具类
    (6)随机数
    (5)包装类
    (4)声明式接口和常用接口
    (3)java.lang.System
    (2)java.lang.Object
    (1)开篇
  • 原文地址:https://www.cnblogs.com/flying607/p/11393014.html
Copyright © 2011-2022 走看看