`
windforce
  • 浏览: 80315 次
  • 性别: 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  
请问博主该如何拦截呢?目前也正遇到这种问题,无法使用事务。。

相关推荐

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Spring与Struts2集成,Spring可以作为Struts2的Action的依赖注入容器,通过Spring的ApplicationContext获取服务层对象,实现业务逻辑处理。 - Struts2与Hibernate集成,通常在Action中通过SessionFactory获取...

    Spring集成struts以及hibernate jar包

    标题中的"Spring集成struts以及hibernate jar包"指的是在Java Web开发中,将Spring框架与Struts2和Hibernate框架进行整合的过程。这通常是为了构建一个完整的MVC(Model-View-Controller)架构,其中Spring负责依赖...

    spring,struts,hibernate,事务

    然而,Struts自身并不包含事务管理功能,它通常与Spring结合使用,由Spring来处理事务控制,从而让Struts专注于请求的路由和视图的呈现。 Hibernate 是一个对象关系映射(ORM)框架,它简化了数据库操作,将数据库...

    第28讲--Struts与Spring集成方案2(Spring集成Struts)

    本讲解将深入探讨如何将Spring集成到Struts中,以实现更好的控制反转(IoC)和面向切面编程(AOP)。 Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,主要用于处理HTTP请求和展示视图。它...

    spring集成Struts与Hibernate

    ### Spring集成Struts与Hibernate详解 #### Spring集成Struts **背景介绍** 随着Java技术的发展,Struts作为最早的MVC框架之一,在Java EE领域中占据了重要地位。虽然随着时间的推移,新的框架和技术不断涌现,但...

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

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    Spring整合集成Struts1.2最简单例子

    下面我们将详细探讨Spring与Struts1.2的整合集成及其核心概念。 1. **Spring框架介绍** Spring是一个全面的后端开发框架,包括了数据访问、事务管理、远程调用、AOP等模块。它通过DI和AOP简化了对象的创建和管理,...

    Spring集成Struts

    7. **处理国际化和异常**:Spring提供了更强大的国际化和异常处理机制,可以将Struts的这些功能委托给Spring处理。 8. **事务管理**:Spring的事务管理器可以轻松地应用于Struts的Action,实现业务逻辑的事务边界...

    spring3 struts2 Mybatis3 组件注解 事务注解 实例

    首先,你需要在MySQL数据库中创建名为TEST的表,包含id和name两个字段,确保表引擎为InnoDB,因为InnoDB支持行级事务和外键约束,适合进行事务处理。 在项目配置中,你需要设置Spring的上下文配置,包括bean的定义...

    SSH集成 Struts+spring+hibernate集成

    Spring还提供了事务管理、数据访问抽象(包括JDBC、ORM集成)、Web MVC框架等模块,能够与Struts无缝集成,提供更高级别的控制反转和事务管理。 3. **Hibernate**: Hibernate是一个对象关系映射(ORM)框架,它...

    Spring集成Struts、JSF、WebWork2

    这篇博客"Spring集成Struts、JSF、WebWork2"探讨了如何将这些框架与Spring进行整合,以构建更复杂、灵活的Web应用程序。 首先,让我们详细了解一下这三个框架: 1. **Struts**: Apache Struts 是最早的Java MVC...

    struts2 spring hibernate集成

    集成Struts2、Spring和Hibernate时,需要注意配置文件的正确设置,包括Action配置、Spring Bean的定义、Hibernate的数据库连接和实体映射。同时,理解这三个框架的工作原理和相互作用,对于解决问题和优化代码至关...

    spring与struts2整合

    同时,为了集成 Spring,需要配置 Struts2-Spring 插件,这样 Struts2 就能利用 Spring 管理的 Bean。 4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过...

    spring_struts整合jar包

    3. **Spring事务管理**:Spring提供了强大的事务管理能力,可以覆盖Struts中的事务处理,确保操作的原子性和一致性。 4. **Spring Security整合**:如果需要实现权限控制,可以使用Spring Security,它能够与Struts...

    Spring+Struts2+hibernate+Redis整合

    通过Action类和拦截器,可以实现与Spring的无缝集成,同时也可以利用Spring的缓存功能,将频繁访问的数据存储在Redis中。 3. **Hibernate框架**:Hibernate是Java领域的一个对象关系映射(ORM)框架,它简化了数据库...

    struts+spring集成

    Struts+Spring集成的主要目的是利用两者的优点,使开发更高效、维护更方便。在集成过程中,通常会用Spring来管理Struts中的Action类,实现Action的依赖注入,从而提高代码的可测试性和解耦性。下面将详细讲解这个...

    基于注解的Spring+Struts2+Mybatis

    4. **事务管理**:Mybatis可以与Spring集成,实现声明式事务管理,简化事务控制。 **Maven**: 1. **项目管理**:Maven通过pom.xml文件管理项目依赖,确保所有开发者使用的库版本一致。 2. **构建流程**:Maven提供...

    Spring与Struts 2整合.zip

    Spring是一个全面的后端框架,涵盖了依赖注入、事务管理、AOP(面向切面编程)等多个方面,而Struts 2则主要负责MVC(模型-视图-控制器)架构中的控制层。这两者的整合使得开发者可以构建出更高效、可维护的企业级...

    spring_struts集成例子

    5. **处理异常**:Spring和Struts2都可以处理异常,集成时需要协调两者之间的异常处理策略。可以通过配置Spring的全局异常处理器和Struts2的全局结果来实现。 6. **事务管理**:Spring提供了强大的事务管理功能,...

    spring+struts+mysql-conn

    2. 集成Struts:配置Struts2的配置文件(struts.xml),指定Action类及其映射,同时设置Spring插件,让Struts2能够利用Spring管理的bean。 3. 数据库连接:在Spring配置中添加数据源和事务管理器,配置MySQL的JDBC...

Global site tag (gtag.js) - Google Analytics