`
huqi
  • 浏览: 96967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多

正如我们所知的,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模块中可以找到本文的实现代码。

分享到:
评论

相关推荐

    spring3.0轻量级框架

    Spring 3.0是Spring框架的一个重要版本,它在轻量级、模块化和灵活性方面进一步提升了Java企业级应用的开发效率。以下是对Spring 3.0关键特性和功能的详细解析: 一、核心容器(Core Container) Spring的核心组件...

    轻量级框架Spring学习笔记

    Spring框架是Java开发中广泛应用的一个轻量级框架,它的核心特性包括依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC)。本文将深入探讨这些概念以及Spring框架的其他重要模块...

    JavavEE轻量级框架Struts2+Hibernate+Spring整合开发

    JavaEE轻量级框架Struts2、Hibernate和Spring的整合开发是现代企业级应用开发中的常见模式,这种组合被称为SSH(Struts2、Spring、Hibernate)框架。这三种技术分别承担了不同职责,共同构建了一个高效、灵活且可...

    Web Service实例(Spring+Hibernate+Web Service)

    - **REST(Representational State Transfer)**:一种轻量级的Web Service架构风格,使用HTTP协议,通常用于简单、快速的数据交互。 4. **Spring与Web Service的整合** Spring提供了对Web Service的支持,可以...

    基于maven+spring+spring mvc+mybatis 框架web项目

    而Tomcat 7则是一个轻量级的Java应用服务器,它可以运行和部署Java Servlet和JavaServer Pages(JSP)应用程序,本项目就是部署在Tomcat上供用户访问。 总结起来,"基于maven+spring+spring mvc+mybatis框架web项目...

    spring+spring mvc+mybatis框架整合实现超市货物管理系统

    MyBatis则是一个轻量级的持久层框架,它允许开发者通过SQL语句直接操作数据库,减少了ORM(对象关系映射)的复杂性。 在项目配置中,我们需要创建Spring的配置文件,如`applicationContext.xml`,这里会定义Bean的...

    Spring CXF Mybatis 发布 Web Service 实例

    1. **Spring框架**:Spring是Java领域最广泛使用的轻量级框架,提供依赖注入(DI)和面向切面编程(AOP)等功能。在本实例中,Spring将作为整体架构的基础,管理各个组件的生命周期,并负责装配和配置CXF与Mybatis。 2....

    基于OSGi和Spring开发企业级Web应用

    - **Spring框架**:作为Java领域中最受欢迎的轻量级开发框架之一,Spring提供了众多功能来简化企业级应用的开发,包括依赖注入、面向切面编程(AOP)、事务管理等。它强调的是“面向接口编程”而非具体的实现细节,...

    整理xfire和spring的集成 web service 面向服务编程 java

    XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service,实现服务的发布和调用。下面将详细介绍如何...

    基于Spring实现的简单的图书管理系统源码

    Spring框架,作为Java领域最流行的轻量级框架之一,因其强大的功能和易用性,被广泛应用在各种类型的系统开发中,包括图书管理系统。本文将深入探讨基于Spring框架实现的简单图书管理系统的核心技术和设计思路。 ...

    Spring框架是在2003年兴起的一门轻量级的JAVAEE框架技术 Spring框架学习资料第四天

    Spring框架是2003年兴起的一门轻量级的JAVAEE框架技术。本文主要介绍Spring框架中的事务控制机制,涵盖了事务的基本概念、JDBC和Mybatis中的事务控制、Spring中的事务控制机制、事务的属性等内容。 一、事务控制 ...

    轻量级Java Web整合开发入门:Struts2+Hibernate4+Spring3.rar

    在Java Web开发领域,"轻量级Java Web整合开发入门:Struts2+Hibernate4+Spring3"是一个经典的教程主题,旨在帮助初学者快速掌握基于这三个框架的开发技术。Struts2、Hibernate4和Spring3是Java应用开发中的三大神器...

    使用XFire+Spring构建Web Service

    首先,XFire是一个基于Java的轻量级Web服务框架,它允许开发者快速地创建和部署SOAP Web服务。XFire提供了直观的API和强大的扩展机制,支持WS-I兼容性,使得服务接口与实现的绑定更为简单。其关键特性包括: 1. **...

    ssh三大轻量级框架整合.doc

    SSH整合指的是将Spring、Struts和Hibernate这三大Java轻量级框架集成在一起,用于构建高效、灵活的企业级Web应用程序。Spring作为一个全能型框架,提供了解决业务逻辑、数据访问和控制层集成的全面解决方案;Struts...

    基于Spring+MyBatis的web项目构建

    【Spring+MyBatis的Web项目构建】是一个典型的Java Web开发模式,它结合了Spring框架的IoC(Inversion of Control)容器和MyBatis轻量级持久层框架,以实现高效、灵活的业务逻辑处理和数据库操作。SSH指的是Spring、...

    Spring框架是在2003年兴起的一门轻量级的JAVAEE框架技术 Spring框架学习资料第五天

    Spring框架,作为2003年崛起的一款轻量级JAVAEE框架,以其简洁和强大的功能深受开发者喜爱。本篇将主要探讨Spring框架的几个核心知识点,包括事务传播属性、注解式事务管理、注解式开发、SSM(Spring+SpringMVC+...

    spring与mybatis整合实现事务配置

    而MyBatis则是一个轻量级的持久层框架,它将SQL与Java代码分离,使数据库操作更加灵活。将两者整合,可以实现高效、灵活的数据库访问和事务控制。 **Spring与MyBatis整合的核心步骤:** 1. **引入依赖**:在项目中...

    基于Spring MVC+Spring+Mybatis+Mysql 客户关系管理系统 SSM毕业设计

    - Mybatis是一个轻量级的持久层框架,它简化了SQL与Java对象之间的映射工作。 - Mybatis通过XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。...

    SSM框架新闻管理系统

    接着,MyBatis是一个轻量级的持久层框架,它简化了数据库操作。在SSM项目中,MyBatis与Spring结合,通过Mapper接口和XML配置文件定义SQL语句,使得数据库操作更加便捷。Service层通过MyBatis的SqlSession进行数据...

Global site tag (gtag.js) - Google Analytics