`
windforce
  • 浏览: 79085 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

spring集成struts事务处理

阅读更多

要在项目中添加声明式事务处理,但是由于开发前期没有很好的规划。很多业务都已经直接写在了action这一层了。service层几乎没写。所以就只有在action层添加事务了。但是添加的事务对于dispatchAction无效。查看代码发现,dispatchAction的所以方法都是通过execute()调用。而spring的声明式事务处理,是通过TransactionInterceptor类来进行拦截调用的。

java 代码
  1. public Object invoke(final MethodInvocation invocation) throws Throwable {   
  2.         // Work out the target class: may be <code>null</code>.   
  3.         // The TransactionAttributeSource should be passed the target class   
  4.         // as well as the method, which may be from an interface.   
  5.         Class targetClass = (invocation.getThis() != null ? invocation.getThis().getClass() : null);   
  6.   
  7.         // If the transaction attribute is null, the method is non-transactional.   
  8.         final TransactionAttribute txAttr =   
  9.                 getTransactionAttributeSource().getTransactionAttribute(invocation.getMethod(), targetClass);   
  10.         final String joinpointIdentification = methodIdentification(invocation.getMethod());   
  11.   
  12.         if (txAttr == null || !(getTransactionManager() instanceof CallbackPreferringPlatformTransactionManager)) {   
  13.             // Standard transaction demarcation with getTransaction and commit/rollback calls.   
  14.             TransactionInfo txInfo = createTransactionIfNecessary(txAttr, joinpointIdentification);   
  15.             Object retVal = null;   
  16.             try {   
  17.                 // This is an around advice: Invoke the next interceptor in the chain.   
  18.                 // This will normally result in a target object being invoked.   
  19.                 retVal = invocation.proceed();   
  20.             }   
  21.             catch (Throwable ex) {   
  22.                 // target invocation exception   
  23.                 completeTransactionAfterThrowing(txInfo, ex);   
  24.                 throw ex;   
  25.             }   
  26.             finally {   
  27.                 cleanupTransactionInfo(txInfo);   
  28.             }   
  29.             commitTransactionAfterReturning(txInfo);   
  30.             return retVal;   
  31.         }  
上面贴出的是主要的代码。可见它是通过对代理类的制定调用方法来进行事务管理。而dispatchAction的所以方法都是通过execute()调用。所以只有拦截其execute方法事务处理才有效。
分享到:
评论
1 楼 fonkyjon 2012-08-31  
请问博主该如何拦截呢?目前也正遇到这种问题,无法使用事务。。

相关推荐

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成 ,一朵多 插入1万条数据,不到2秒,备注不包含类库

    spring2.5学习PPT 传智博客

    28.Struts与Spring集成方案2(Spring集成Struts) 29.为Spring集成的Hibernate配置二级缓存 30.Spring提供的CharacterEncoding和OpenSessionInView功能 31.使用Spring集成JPA 32.Struts+Spring+JPA集成 33.使用...

    Spring2.5和Hibernate3集成--学习spring aop ioc

    * 在编写业务逻辑方法时,最好将异常一直往上抛出,由表示层处理(Struts) * spring的事务管理需要添加到业务逻辑上(事务边界的定义),不要回到Dao上 技术提示: 在编写经下代码时: *" propagation=...

    Struts1.3+Spring3.0+Hibernate3.3+DWR2.X框架集成文档v1.4

    Struts1.3+Spring3.0+Hibernate3.3+DWR2.X框架集成文档v1.4.pdf 包括事务处理配置,个人整理,仅供学习,请务拍砖。呵呵~~

    使用Spring更好地处理Struts动作

    Spring 支持可插拔的事务管理器,可以给您的事务处理提供更广泛的选择范围。它集成了领先的持久性框架,并且提供一个一致的异常层次结构。Spring 还提供了一种使用面向方面代码代替正常的面向对象代码的简单机制。 ...

    三大主流框架集成加上spring申明式事务的DEMO

    一个用三大主流框架struts2 +spring2.5+hibernate3+spring申明式事务写的一个转账DEMO,希望可以和大家共同交流

    hibernate4.3.10,spring 4.2 ,struts2.3.24集成项目环境

    hibernate4.3.10,spring 4.2 ,struts2.3.24做了一下简单的集成,能够运行起来,对其进行了简单的单元测试,测试时hibernate4使用hibernatetemplate出现事务异常,没有解决,只是一个简单的框架原型。采用当前比较新...

    跟我学spring3(8-13).pdf

    对ORM的支持 之 8.1 概述 8.2 集成Hibernate3 8.3 集成iBATIS 8.4 集成JPA 9.1 数据库事务概述 9.2 事务管理器 9.3 编程式事务 9.4 声明式事务 10.1 概述 10.2 集成Struts1.x 10.3 集成Struts2.x 10.4 集成JSF 11.1 ...

    struts2.4+spring3.1+hibernate4.1的SSH框架

    在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。...

    跟我学spring3(8-13)

    【第十章】集成其它Web框架 之 10.2 集成Struts1.x ——跟我学spring3 【第十章】集成其它Web框架 之 10.3 集成Struts2.x ——跟我学spring3 【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3 【第十一...

    最新版本的Struts2+Spring4+Hibernate4三大框架整合(改进:增加整合Quartz和Gson)

    项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 + Quartz2.2.1 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + ...

    spring杂谈 作者zhang KaiTao

    1.1 Spring事务处理时自我调用的解决方案及一些实现方式的风险 1.2 我对AOP的理解 1.3 Spring开闭原则的表现-BeanPostProcessor的扩展点-1 1.4 我对IoC/DI的理解 1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成...

    带事务回滚测试的SSH整合小案例(Spring 3.2+Hibernate 3.3+Struts 2.3)

    集成了Spring 3.2.2 Hibernate 3.3.2 Struts 2.3.4 用JPA的注解实现orm 不用创建数据库表 只需本机上有oracle即可 用JSR注解进行Spring的依赖注入 用Spring Test整合Junit4 进行测试并自动事务回滚 不对数据库造成...

    图书管理系统(struts+hibernate+spring).rar

    这个名为“图书管理系统(struts+hibernate+spring).rar”的压缩文件,是一个针对计算机专业的JSP源码资料包,它集成了Struts、Hibernate和Spring这三个主流的Java开发框架。通过这个资料包,用户可以深入了解和学习...

    会员管理系统(struts+hibernate+spring)130226.rar

    "会员管理系统(struts+hibernate+spring)130226.rar" 是一个针对计算机专业的JSP源码资料包,它集成了Struts、Hibernate和Spring框架,旨在为用户提供一个高效、稳定且易于维护的会员管理解决方案。这个系统通过使用...

    Spring_Hibernate集成

    1、声明式事务配置 * 配置SessionFactory * 配置事务管理器 ... * 编写业务逻辑方法时,最好将异常一直向上抛出,在表示层(struts)处理 * 关于事务边界的设置,通常设置到业务层,不要添加到Dao上

    spring4.3.2参考文档(英文)

    所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC ...

    Maven构建Struts2Spring3Hibernate4项目例子

    本例写于2013年6月5日,全部采用最新的jar包,利用maven构建工具集成struts2 + spring3 + hibernate4 写成的web示例程序。该示例严格采用三层架构,提供事务处理机制。可直接基于该示例进行更深层业务的开发。

    spring课堂笔记的相关知识

    方便解耦,简化开发 Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring...Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

Global site tag (gtag.js) - Google Analytics