专栏首页芋道源码1024分布式事务 TCC-Transaction 源码解析 —— 调试环境搭建

分布式事务 TCC-Transaction 源码解析 —— 调试环境搭建

本文主要基于 TCC-Transaction 1.2.3.3 正式版

  • 1. 依赖工具
  • 2. 源码拉取
  • 3. 初始化数据库
  • 4. 启动 capital 项目
  • 5. 启动 redpacket 项目
  • 6. 启动 order 项目
  • 666. 彩蛋

1. 依赖工具

  • Maven
  • Git
  • JDK
  • MySQL
  • IntelliJ IDEA

2. 源码拉取

从官方仓库 https://github.com/changmingxie/tcc-transaction.git Fork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。?

使用 IntelliJ IDEAFork 出来的仓库拉取代码。拉取完成后,Maven 会下载依赖包,可能会花费一些时间,耐心等待下。

本文基于 master-1.2.x 分支。

3. 初始化数据库

官方提供了两个 Demo 项目例子:

  • tcc-transaction-dubbo-sample
  • tcc-transaction-http-sample

考虑到不是所有所有同学都使用过 Dubbo 服务化框架,我们以 tcc-transaction-http-sample 项为例子。

打开 tcc-transaction-http-sample/src/main/dbscripts 目录,有四个 SQL 脚本文件:

  • create_db_cap.sql :tcc-transaction-http-capital 项目数据库初始化脚本。
  • create_db_ord.sql :tcc-transaction-http-order 项目数据库初始化脚本。
  • create_db_red.sql :tcc-transaction-http-redpacket 项目数据库初始化脚本。
  • create_db_tcc.sql :tcc-transaction 底层数据库初始化脚本。

笔者使用 Navicat 进行数据库脚本执行。使用方式为:Navicat 菜单 Connection -> Execute SQL File,选择脚本文件,逐个执行。

目前数据库脚本未使用 USE 语句选择对应数据库,每个脚本都需要进行添加。以 create_db_cap.sql 举例子:

CREATE DATABASE `tcc_cap` /*!40100 DEFAULT CHARACTER SET utf8 */;
-- 新增 USE
USE `tcc_cap`;

4. 启动 capital 项目

  1. 修改项目下 jdbc.properties 文件,填写成你的数据库地址
  2. 使用 IDEA 配置 Tomcat 进行启动。这里要注意下: // appcontext-service-provider.xml <bean id="httpServer" class="org.springframework.remoting.support.SimpleHttpServerFactoryBean"> <property name="contexts"> <util:map> <entry key="/remoting/CapitalTradeOrderService" value-ref="capitalTradeOrderServiceExporter"/> <entry key="/remoting/CapitalAccountService" value-ref="capitalAccountServiceExporter"/> </util:map> </property> <property name="port" value="8081"/> </bean>
    • 默认开启 8081 端口提供接口服务。所以配置 Tomcat 的端口不能再使用 8081,避免冲突。例如,笔者使用 18081。
  3. 访问 http://127.0.0.1:18081/,看到 "hello tcc transacton http sample capital",代表项目启动完成。18081 为你填写的 Tomcat 端口

5. 启动 redpacket 项目

同 tcc-transaction-http-capital 项目。

6. 启动 order 项目

  1. 修改项目下 jdbc.properties 文件,填写成你的数据库地址
  2. 使用 IDEA 配置 Tomcat 进行启动。
  3. 访问 http://127.0.0.1:8080/,看到 "sample 说明...",代表项目启动完成。8080 为你填写的 Tomcat 端口
  4. 点击 [商品列表链接] -> [购买] -> [支付],如果看到 "支付成功" 或者 "支付失败",恭喜你?,你已经成功搭建完你的调试环境。愉快的开始玩耍把。

666. 彩蛋

调试环境搭建是阅读源码的第一步,如果你碰到无法搭建成功的情况,请给笔者公众号( 芋道源码 )留言。笔者会给你 1:1 的高级( 搞基 )支持。

另外这是一个系列文,本系列更新 TCC-Transaction ,下一个系列更新 ByteTCC 。嗨皮不?!

道友,赶紧上车,分享一波朋友圈!

本文分享自微信公众号 - 芋道源码(YunaiV),作者:芋艿

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库不推荐使用外键的 9 个理由

    缺少外键明显问题是数据库不能强制进行引用完整性检查,如果在高一层没有正确处理,则可能会导致数据不一致(子行没有相应父行)。

    芋道源码
  • Java 分布式 RPC 框架性能大比拼,Dubbo 排第几?

    其它的一些知名电商如当当、京东、国美维护了自己的分支或者在dubbo的基础开发,但是官方的库缺乏维护,相关的依赖类比如Spring,Netty还是很老的版本(S...

    芋道源码
  • 一起来学 SpringBoot | 第一篇:构建第一个 SpringBoot 工程

    摘要: 原创出处 http://blog.battcn.com/2018/04/20/springboot/v2-introducing/ 「唐亚峰」欢迎转载,...

    芋道源码
  • TypeScript 模块导入那些事

    两者大部分是等价的,但 ES6 规范对 import * as 创建出的模块对象有一点限制。 根据该规范,该模块对象不可被调用,也不可被实例化,它只具有属性。

    三毛
  • UML之用例图

    UML-Unified Model Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。 在UML系统开发中...

    chain
  • LoadRunner12工具介绍(连载11)

    要测试的场景是:进入电子商务网站,输入用户名和密码。点击【登录】按钮,测试登录事务的性能。在这里采用“单协议->WEB-HTTP/HTML”。录制脚本如116所...

    小老鼠
  • 刘金玉的零基础VB教程074期:如何使用doevents

    使用场景:我们一般处理大量数据,导致系统卡在当前界面上面,考虑到用户体验,我们要使用doevents

    刘金玉编程
  • python笔记39-unittest框架如何将上个接口的返回结果给下个接口适用(面试必问)

    面试必问:如何将上个接口的返回结果,作为下个接口的请求入参?使用unittest框架写用例时,如何将用例a的结果,给用例b使用。 unittest框架的每个用例...

    上海-悠悠
  • 《Kotin 极简教程》第7章 面向对象编程(OOP)(1)第7章 面向对象编程(OOP)《Kotlin极简教程》正式上架:

    在前面的章节中,我们学习了Kotlin的语言基础知识、类型系统、集合类以及泛型相关的知识。在本章节以及下一章中,我们将一起来学习Kotlin对面向对象编程以及函...

    一个会写诗的程序员
  • Python提取中文字符

    写这个jupyter的原因是好几次自己爬完新闻之后,发现中间有些是html标签代码或者其他多余的英文字符,自己也不想保留,那么这时候一个暴力简单的方法就是使用 ...

    致Great

扫码关注云+社区

领取腾讯云代金券