对照着BTP协议,把jotm-btp的代码看了两遍,终于有了点比较深入的理解了,是时候写下点心得了。

首先是说说jotm-btp与jotm的关系。从字面上看,jotm-btp显然是jotm的一个扩展。具体的说来,在前者的代码中直接调用了后者的:ControlImpl、Resource、TransactionFactory、TransactionFactoryImpl等这几个类或接口。TransactionFactoryImpl用来创建事务ID,在Decider中一个事务ID唯一对应一个ControlImpl对象;ControlImpl是事务控制中最重要的类了,jotm-btp直接调用该类来实现事务的提交和回滚控制(即沿用了jotm的事务控制方式),具体的准备、提交和回滚实现,通过调用Resource接口来完成;jotm-btp的SOAPResource类实现了Resource接口,供ControlImpl调用,完成BTP定义的事务处理方式。

接着我来分析下jotm-btp对BTP的实现方式。在这里我举三个典型的过程:beginning、enrolling和confirming。

首先是beginning的实现过程,如下图所示:

接着是enrolling的实现过程:

 最后是confirming的实现过程,实现事务的最后提交:

以上实现中,所有的Terminator和Decider、Participant和Decider的数据通信都是通过Axis的WebService方式实现的。

另外,通过分析源代码发现,jotm-btp并没有完全实现BTP中的另一种事务模式——cohesion模式。它只能进行简单的提交操作,如果遇到错误,仅仅是返回error、提示错误,而没有实现事务的回滚操作。我想这就是我们要完善的地方了……

(STITP)jotm-btp的深入分析相关推荐

  1. (STITP)jotm-btp项目的Demo分析

    STITP的中期检查临近了,要抓紧时间赶赶进度了,相对次要的事放一边了-- 这次STITP项目做的是<基于BTP协议的WebService事务平台的实现>,看似很有研究价值的课题,协议打印 ...

  2. 用 JOTM 向Servlet中添加事务

    J2EE 除了提供了 servlet 之外,还提供了大量的其它功能.Servlet 开发者们也许难得使用这些功能,不情愿也没有时间用一个超出所需的大型 J2EE 服务器来替换自己的简单的 servle ...

  3. (STITP)jotm-btp的改进(一)

    根据之前的源码分析,我打算先扩展Decider的cohesion模式. 原本Decider类的实现方式:对于Atomic模式,由于ConfirmTransaction消息没有传递Inferiors-l ...

  4. android AIDL IPC深入分析

    深入分析AIDL原理 博客分类: Android 在上一篇文章(Service使用方式)中,介绍了Android进程间通信(IPC)的使用,并给出了一个示例.但并没有深入分析aidl是怎样可以做到进程 ...

  5. Linux堆内存管理深入分析(上)

    Linux堆内存管理深入分析 (上半部) 作者:走位@阿里聚安全   0 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏 ...

  6. 深入分析Parquet列式存储格式

    深入分析Parquet列式存储格式 Parquet是面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的 ...

  7. GBDT算法原理深入分析

    GBDT算法原理深入分析1 https://www.zybuluo.com/yxd/note/611571 GBDT算法原理深入分析2 https://www.wandouip.com/t5i1874 ...

  8. 深入分析 Jdk - 集合容器 Map 与 Set

    SegmentFault 不兼容部分 markdown,详情请见 深入分析 Jdk - 集合容器 Map 与 Set

  9. DTP模型之二:(XA协议之二)jotm分布式事务实现

    分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持.如果使用 ...

最新文章

  1. win10子系统ubuntu文件夹位置_win10子系统(WSL)自定义安装路径
  2. 资源 | 来自独秀同学的深度网络数学笔记,还不快收藏?
  3. python隐式调用方法_Python为什么不隐式实现self
  4. oracle数据库数据导入导出步骤(入门)
  5. ubuntu下使用pidgin(pidgin-lwqq)登陆qq
  6. python验证数学原理_一起学opencv-python九(性能的测量和优化与图像处理的数学原理)...
  7. js 封装经纬度成json_R实现地理位置与经纬度相互转换
  8. A*B Problem(洛谷-P1303)
  9. 最大数输出(信息学奥赛一本通-T1053)
  10. python最好的五个库_5 个Python 库,照亮你的机器学习之路
  11. 使用内存映射提高BufferedRandoAccessFile性能(测试可用)
  12. 安装pycuda的正确办法
  13. java selenium2_Selenium2(webdirver)入门之环境搭建(Java版)
  14. html知识 笔记,HTML基础知识笔记
  15. i3 10105f和i5 10400f差多少 I3 10105F和I5 10400F区别
  16. Python 3 字符串 rsplit( ) 方法
  17. 是时候让AI辅助你追剧了,以《猎场》为例
  18. 出现无法访问的故障,ping出现请求超时time out,系目的主机网关造成问题排查过程
  19. 【软考-软件设计师】(五).计算机网络
  20. WinRAR(去广告)中文繁体

热门文章

  1. Linux tasklet
  2. 网考计算机应用基础试题,网考计算机应用基础统考试题
  3. 揭开UTF-8的神秘面纱
  4. Python编写游戏——拼图游戏
  5. WiFi网络带宽、流量监控管理
  6. Java开发工具 一 数据库,时间转换
  7. 转译器-解释器-编译器
  8. 知识到底如何变现?多种模式你选哪一个
  9. 微信小程序实现点赞气泡效果
  10. 独孤思维:当天实操,一本利润70+