(STITP)jotm-btp的深入分析
对照着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的深入分析相关推荐
- (STITP)jotm-btp项目的Demo分析
STITP的中期检查临近了,要抓紧时间赶赶进度了,相对次要的事放一边了-- 这次STITP项目做的是<基于BTP协议的WebService事务平台的实现>,看似很有研究价值的课题,协议打印 ...
- 用 JOTM 向Servlet中添加事务
J2EE 除了提供了 servlet 之外,还提供了大量的其它功能.Servlet 开发者们也许难得使用这些功能,不情愿也没有时间用一个超出所需的大型 J2EE 服务器来替换自己的简单的 servle ...
- (STITP)jotm-btp的改进(一)
根据之前的源码分析,我打算先扩展Decider的cohesion模式. 原本Decider类的实现方式:对于Atomic模式,由于ConfirmTransaction消息没有传递Inferiors-l ...
- android AIDL IPC深入分析
深入分析AIDL原理 博客分类: Android 在上一篇文章(Service使用方式)中,介绍了Android进程间通信(IPC)的使用,并给出了一个示例.但并没有深入分析aidl是怎样可以做到进程 ...
- Linux堆内存管理深入分析(上)
Linux堆内存管理深入分析 (上半部) 作者:走位@阿里聚安全 0 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏 ...
- 深入分析Parquet列式存储格式
深入分析Parquet列式存储格式 Parquet是面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的 ...
- GBDT算法原理深入分析
GBDT算法原理深入分析1 https://www.zybuluo.com/yxd/note/611571 GBDT算法原理深入分析2 https://www.wandouip.com/t5i1874 ...
- 深入分析 Jdk - 集合容器 Map 与 Set
SegmentFault 不兼容部分 markdown,详情请见 深入分析 Jdk - 集合容器 Map 与 Set
- DTP模型之二:(XA协议之二)jotm分布式事务实现
分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持.如果使用 ...
最新文章
- win10子系统ubuntu文件夹位置_win10子系统(WSL)自定义安装路径
- 资源 | 来自独秀同学的深度网络数学笔记,还不快收藏?
- python隐式调用方法_Python为什么不隐式实现self
- oracle数据库数据导入导出步骤(入门)
- ubuntu下使用pidgin(pidgin-lwqq)登陆qq
- python验证数学原理_一起学opencv-python九(性能的测量和优化与图像处理的数学原理)...
- js 封装经纬度成json_R实现地理位置与经纬度相互转换
- A*B Problem(洛谷-P1303)
- 最大数输出(信息学奥赛一本通-T1053)
- python最好的五个库_5 个Python 库,照亮你的机器学习之路
- 使用内存映射提高BufferedRandoAccessFile性能(测试可用)
- 安装pycuda的正确办法
- java selenium2_Selenium2(webdirver)入门之环境搭建(Java版)
- html知识 笔记,HTML基础知识笔记
- i3 10105f和i5 10400f差多少 I3 10105F和I5 10400F区别
- Python 3 字符串 rsplit( ) 方法
- 是时候让AI辅助你追剧了,以《猎场》为例
- 出现无法访问的故障,ping出现请求超时time out,系目的主机网关造成问题排查过程
- 【软考-软件设计师】(五).计算机网络
- WinRAR(去广告)中文繁体