Web服务事务模型与规范解析
1. 现有事务模型面临的挑战
当前Java/J2EE环境中的事务管理器大多采用扁平事务模型,且多数事务在单一企业、单一信任域内,由一个事务管理器控制所有资源。然而,Web服务环境给扁平事务带来了新挑战:
- 服务间松耦合 :Web服务应用由多个组织的服务松散耦合而成,每个服务可能有独立事务边界,简单扁平事务模型难以保证原子性。例如Flute银行的账单支付服务,与外部支票书写服务协作时,若外部服务有自己的事务,扁平模型可能无法保障消费者操作的原子性。
- 长事务问题 :许多业务事务耗时久,长时间持有资源锁会降低事务并发度,还可能引发拒绝服务攻击,因此需放宽隔离属性。企业常对某些事务设置时间限制,如航空公司为旅行社保留预订两天,超时后的处理需双方协商,事务协议应支持此类协商。
- 可选子事务 :部分业务事务中,部分活动可选。以虚构旅行社为例,消费者请求预订时,旅行社向多个航空公司、租车公司和酒店请求服务。某些航空公司可能因无座位拒绝参与,若多个航空公司锁定座位,需生成补偿事务释放多余预订,这在概念上放宽了事务的持久性。
- 事务上下文传播 :跨组织的Web服务应用,事务需跨服务执行,不同服务可能采用不同技术和平台,存储在异构数据库中。事务上下文必须在服务间传递,Web服务事务管理器需支持基于XML的事务上下文在Web服务协议上的传播。
2. 传统与新事务模型对比
传统事务模型和新事务模型在多个属性上存在差异,如下表所示:
| 属性 | 传统事务 | 业
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



