基于Spring的轻量级Web Service事务管理框架及其实现

掌握SSM框架:Java Web开发的基础代码与应用 SSM框架是由Spring, SpringMVC和MyBatis三大框架整合而成的Java EE企业级应用开发框架。它结合了Spring的依赖注入(DI)、面向切面编程(AOP)、事务管理、对象生命周期管理等核心功能,与SpringMVC的高效请求分发,以及MyBatis的灵活数据库交互能力,共同形成了一个功能全面、结构清晰、开发效率高且易于维护的轻量级框架。MyBatis允许开发者自己定义接口和映射文件之间的关系,这样可以保证应用架构的灵活性。// 自定义接口// 映射文件。 阅读详情

正如我们所知的,Web Service的SOAP消息可以通过许多种基于Internet的网络传输协议来传送。大部分情况下,我们使用HTTP协议来传送SOAP消息,一个优势是,由于HTTP协议的无状态特性,那么,基于其的SOAP消息很容易的穿过防火墙;但同时也有一个副作用就是,无法保证Web Service客户端和服务端的一致性,即Web Service事务不可控制。

我并不十分了解诸如SDO(Service Data Object)/SCA(Service Component Architecture)之类的新新技术规范模型是如何解决这个问题的,这里我只想提出一种基于Spring框架的解决思路,及实现。没错,正是利用Spring这种我们“JavaEE生活”中最大众化的产品的事务管理机制,结合Apache最新的Web Service引擎Axis2,加以扩展实现的。

它可以在一定范围内解决Web服务客户端与服务端事务不可控制的问题,利用自定义策略补偿出现异常情况的事务,以下给出解决JDBC和Hibernate数据持久化的Web Service事务问题的方案。

基本原理就是扩展Spring的JDBC及Hibernate事务管理框架(实际上就是分别继承Spring的DataSourceTransactionManager和HibernateTransactionManager)。

Spring本身的管理方法是将本地事务控制在一个线程中,将事务资源(诸如Connection Holder之类)存储在ThreadLocal,即本地线程绑定的变量中,以方便的在多个事务或事务的嵌套中“挂起”、“恢复”事务,目标是完成“整体”的事务。

现在,我们可以对其加以改造:在Web Service服务端执行完毕后,不立即提交事务,而是将本应放入ThreadLocal中的Spring事务资源放入一个“事务资源池”中(这个事务至少应该是线程安全的),那么,这就相当于“挂起”在服务端的事务,然后,利用Axis2的异步Web Service客户端的特性,去完成客户端的事务先——执行异步客户端回调方法中的客户端事务,好,接下来将会有以下几种情况出现:

  1. 客户端事务提交成功——则客户端会自动通知服务端提交“事务资源池”中相应的事务,两方面事务成功提交。
  2. 客户端事务提交失败——无论是由于异常爆发或业务逻辑未通过,在这种情况下,客户端都应通知服务端“回滚”(rollback)事务,以保证两端一致性。
  3. 客户端与服务端失去联系——这种场景最常见的情况就是网络瞬断。那么,由于接收不到客户端的消息,服务端被“挂起”的事务就应该在指定的等待时间后,去触发执行特定的“事务超时”策略,根据配置的策略对失去联系的服务端事务进行“补偿”处理,这种处理表现为“回滚”(rollback)或“提交”(commit)。

以上只是这种Web Service事务管理机制的构想及原理,真正付诸实现的话,还是需要扩展、抽象一些Spring和Axis2的类型,同时还需要注意很多问题诸如线程安全、适用性等,另外,对于事务数据传送对象(Transaction DTO)等的规范也需要详细定义……

我已经在一个开源项目中对此事务管理框架有了实现,可以参考:

ClearWork@SourceForge

ClearWork对Axis2的扩展 - 基于自定义策略的Web Service事务控制

在这个项目Web Service模块中可以找到本文的实现代码。

从内参矩阵到归一化平面:揭秘相机成像的标准化核心 本文深入解析了相机成像中的核心概念——归一化平面。通过拆解内参矩阵(包含焦距、主点等参数)的作用,详细阐述了如何将像素坐标转换为与具体相机硬件无关的归一化坐标。这一标准化过程是计算机视觉算法(如多相机系统对齐、视觉SLAM)实现跨设备通用性的关键,能有效提升算法的鲁棒性和泛化能力。 阅读详情

相关推荐

网络安全学习路线是怎样的?

为什么要学习安全? 近几年网络安全事件层出不穷,相信大家哪怕没遇到过,但也听过不少了吧。如服务器遭受入侵被黑,用户帐号被盗;被钓鱼、勒索病毒等,这些一旦发生,对企业而言都是不小的打击。因此,网络安全不容忽视,同时随着时代的不断发展,公司对于运维及网络工程师要求也越来越严格。未来越来越吃香的一定是技能方向广的复合型人才。网络安全可以说是一条非常好的发展道路。 今年两会期间,全国政协委员,360集团创始人、董事长周鸿祎提交了关于网络安全行业特殊人才的提案,为广大白帽子人员争取更好...

网安技术分享 8697

spring整合webservice

近期刚到一家公司,让我写一些webservice的接口,虽然以前接触过webservice,但是接触的都是一些简单的,没有和其他框架整合过,现在整个项目已经跑起来了,自己走了不少的弯路,网上的整合的例子也有很多,但是很杂,希望我写的这个能够帮助你理清整个项目怎样配置的,公司的项目是用的xfire框架搭建的webservice,那么下面我就以webservice为例,给大家写一写! 导入spr

wang_joy的博客 646

从零构建机械臂规划栈:Pinocchio、OMPL与Ruckig的工程化融合实践

本文详细介绍了如何从零构建机械臂规划栈,通过融合Pinocchio、OMPL和Ruckig三大核心组件,实现高性能的机械臂运动规划与轨迹生成。文章深入探讨了技术选型、工程架构设计及实战优化技巧,特别针对逆解、路径规划和轨迹平滑等关键环节提供了实用解决方案,适用于工业场景中的高实时性需求。

weixin_29072299的博客 433

SSH-BOS项目:定区管理模块之关联客户(WebService)

crm部分: CustomerSerivce: package com.xushuai.service; import java.util.List; import javax.jws.WebService; import com.xushuai.entity.Customer; @WebService public interface CustomerService { /**...

Bbb的博客 582

车载通信技术原理-CAN通讯和代码配置:奥迪A6轿车总线拓扑图

CAN总线是一种用于汽车监测与控制系统的串行通信协议,由德国Bosch公司开发。它具有多主工作方式、优先级仲裁、高抗干扰等特点,支持点对点、广播等多种通信方式,传输距离可达10公里。CAN协议采用差分信号传输,物理层使用双绞线,数据链路层实现错误检测、位填充等功能。协议帧类型包括数据帧、遥控帧、错误帧等。CAN总线自1986年发布以来,已成为汽车电子系统的标准配置,广泛应用于车载网络。文章还提供了S32K144芯片的CAN驱动代码示例。

擎天柱工坊 1067

Docker网络教程(四)macvlan 网络教程

在这种网络下,Docker 宿主机在它的IP之上,允许接受多个 MAC 地址的请求,然后再将这些请求路由至对应的容器里。流通,Docker 会用它的 MAC 地址,把流量路由进你的容器里。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。),Docker使用其MAC地址将流量路由到你的容器。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。你需要 3.9 或者更高版本的 Linux 内核,4.0 以及以上的版本是更好的。如果你的设备叫别的名字,用对应的名字代替。

weixin_42445065的博客 4132

JAVA开发Web Service几种框架介绍

介绍目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS之间的区别和针对不同的情况应该如何选择合适自己项目的服务框架.......

无情的你,无情的雨! 8万+

Cursor 团队代码规范与开发规则

本文提出了一套 Cursor 项目开发规范,涵盖代码结构、命名、日志、测试等关键环节,旨在提升代码质量和团队协作效率。核心规则包括:文件不超过2000行、函数不超过80行;变量命名禁用无意义单词;日志只记录关键信息;配置项禁止硬编码;依赖和敏感信息统一管理;核心逻辑测试覆盖率≥80%;Git提交遵循Conventional Commits规范。通过一个车辆数据处理函数的改造案例,展示了从"不规范"到"规范"的代码优化过程,体现了拆分函数、常量管理、错误处理等规范的实际

1256

Java轻量级业务层框架Spring两大核心IOC和AOP原理

IoC(Inversion of Control):   IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。    其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的)。也...

weixin_30763455的博客 318

MLX90640 热成像 STM32

MLX90640 热成像

zhaocundang's blog 5007

【QNX+Android虚拟化方案】136 - QNX 侧 Coredump 文件解析

【QNX+Android虚拟化方案】136 - QNX 侧 Coredump 文件解析

|~~~热爱生活、努力学习的小伙汁~~~| 1909

Springboot集成Web service接口服务

1、WebService 是一种跨编程语言和跨操作系统平台的远程调用技术。 2、WebService平台的三大技术:XML+XSD,SOAP,WSDL。   1)、XML+XSD:WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的 返回结果是什么)。XML是WebService平台中表示数据的格...

HiterCoder 2289

基于遗传算法改进BP神经网络的电池容量SOC预测

,遗传算法BP神经网络能很好的实现对电池容量soc的训练和预测,BP神经网络是一种成熟的神经,相对于其他神经网络,拥有很多的训练函数,传递函数,可以调节的参数非常多,对各种问题都可以达到一个比较理想的效果,关键看如何调试参数,选择训练传递函数,遗传算法改进BP神经网络的初始权值阈值,达到改进BP神经网络的目的,从而更好的实现对电池容量SOC的预测

abc991835105的博客 768

SSM轻量级框架 Spring-MyBatis整合

技能训练 SSM轻量级框架p161页: 1,查询出所有供应商数据 2,按照供应商名称模糊查询供应商信息 SSM轻量级框架p165页: 3, 实现订单表查询操作 创建java-web项目 1,加载所需要的jar包 2,在src下面编写代码 编写实体类对象:provider package com.aaa.entity; /** * @author :jinxin * @date :Created in 2020/10/13 13:47 * @version: $ */ public class

qq_44856121的博客 448

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring框架及其优点

1. 框架简介 Spring 是另一个主流的 Java Web 开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引力。Spring 框架因其强大的功能以及卓越的性能而受到众多开发人员的喜爱。 Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了

Q1368089323的博客 1290

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

spring框架的学习成果

目录一、spring入门1.框架的认识(1)什么是框架(2)重量级与轻量级框架2.spring框架简介Spring与IoC二、spring与AOP三、spring与JdbcTemplate四、spring与事务管理五、参考 一、spring入门 小编第一次接触框架的学习,也才花了一天的时间去学习spring框架,本篇文仅作为记录自己的学习成果。资深者勿入,小小白可以看一下。 1.框架的认识 (1)...

chan_fan的博客 486

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

全网最全Spring系列面试题129道(附答案解析)

1、不同版本的 Spring Framework 有哪些主要功能? 2、什么是 Spring Framework? Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。它可以集成其他框架,如 Structs、Hibernate、EJB 等,所以又称为框架的框...

程序员追风的博客 1万+

Spring框架

什么是Spring? Spring是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架。(EJB重量级) Spring为不同的层都提供了企业级解决方案: web层:spring mvc service层:spring(比如:事务管理、日志增强) dao层:JDBCTemplate Spring的核心思想是IoC(控制反转)和AOP(面向切面编程) 为什么要用Spri...

Wang_huanA的博客 265

Spring——Spring框架组成

本博文主要介绍Spring框架整体架构,Spring的核心IOC,AOP的案例和具体实现机制;以及SpringMVC框架的案例和实现机制。帮助大家快速学习和理解Spring框架中相关原理。

庄小焱 1471

Spring框架的介绍

Spring是由Rod Johnson组织开发的一个分层的Java SE/EE一站式(full-stack)轻量级开源框架。其核心的理念是控制反转(Inversion of Control,IoC)和面向切面编程(Aspect Oriented Programming, AOP)。其中,IOC是Spring的基础,它支撑着Spring对Java Bean的管理功能;AOP是Spring的重要特性,它通过预编译方式和运行期间动态代理实现程序功能,即可以在不修改源代码的情况下为程序统一添加功能。

m0_75047755的博客 715

【Spring入门】一、Spring框架概述

1、 什么是Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为...

qq_42924285的博客 386

Web框架-SSM框架

三大问题 1.是什么? 答:Web框架或者叫做Web应用框架,是用于进行Web开发的一套软件架构,是一种开发框架, 2.作用是什么? 答:用来支持动态网站、网络应用程序及网络服务的开发。主要用于动态网络开发。开发者可以基于Web框架实现自己的业务逻辑。Web框架实现了很多功能,为实现业务逻辑提供了一套通用方法。 3.怎么用? 答:在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己再重新实现,而是将业务逻辑相关的代码写入框架就可以。 4.现最流行框架? 答:1.Java目前的主流开发框架是ssm(sp

a23_23的博客 3715

Java Web基础——Action+Service +Dao三层的功能划分

参考来源:http://www.xuebuyuan.com/2153333.html  1. Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的。 Service是管理具体的功能的。 Action只负责管理,而Service负责实施。 DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查

inter_peng的专栏 19万+
上一篇: SOA Presentation - SOA概念介绍
下一篇: 基于Spring的轻量级Web Service事务管理框架及其实现
AlexanderHu
博客等级 码龄22年 511粉丝 81原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值