`
dojax
  • 浏览: 2082 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

after-throwing 捕获 分布式事务异常的 疑问

阅读更多
项目采用   三层结构   用到了分布式事务,包裹的是services层的方法,相关配置如下:
   
    <bean   id="abstractTransactionProxy"   abstract="true" 
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
        <property   name="transactionManager"> 
            <ref   bean="transactionManager"/> 
        </property> 

        <property   name="transactionAttributes"> 
            <props> 
                <prop   key="find*"> PROPAGATION_REQUIRED,readOnly,-OrderException </prop> 
                <prop   key="get*"> PROPAGATION_REQUIRED,readOnly,-OrderException </prop> 
                <prop   key="save*"> PROPAGATION_REQUIRED,-OrderException,-OrderMinimumAmountException </prop> 
                <prop   key="add*"> PROPAGATION_REQUIRED,-OrderException,-OrderMinimumAmountException </prop> 
                <prop   key="del*"> PROPAGATION_REQUIRED,-OrderException,-OrderMinimumAmountException </prop> 
                <prop   key="remove*"> PROPAGATION_REQUIRED,-OrderException,-OrderMinimumAmountException </prop> 
            </props> 
        </property> 
    </bean> 


    <bean   id="ocsServices" 
        class="services.OcsServices"> 
        <property   name="smp"> 
            <ref   bean="hqlExecutor1"/> 
        </property> 
        <property   name="daoScpList"> 
            <list> 
                <ref   bean="hqlExecutor1"/> 
                <ref   bean="hqlExecutor2"/> 
            </list> 
        </property> 
    </bean> 

    <bean   id="ocsconfigService"   parent="abstractTransactionProxy"> 
        <property   name="target"> 
            <ref   bean="ocsServices"/> 
        </property> 
    </bean> 

    <aop:config> 
        <aop:aspect   id="prefixAspect4"   ref="logInterceptor"> 
            <aop:pointcut   id="prefixPointCut4" 
                  expression="execution(*   services.OcsServices.add(Object))   and   args(Object)"   /> 
            <aop:after-throwing 
                      pointcut-ref="prefixPointCut4"   method="afterThrowing" 
                      throwing="dataAccessException"/> 
        </aop:aspect> 
    </aop:config> 

    <bean   id="logInterceptor"   class="aop.LogAop"> 
    </bean> 

    <bean   id="prefixController"   class="mvc.PrefixController"> 
        ........ 
        <!-- 
              将ocsconfig-service中配置的ocsServices注入。 
        --> 
        <property   name="ocsServices"> 
            <ref   bean="ocsconfigService"/> 
        </property> 
        <!-- 
              设置controller可以转发的页面。 
        --> 
        ..... 
    </bean> 

目前的想法就是希望 <aop:aspect   id="prefixAspect4"   ref="logInterceptor"> 能捕获提交事务时如果出现异常能捕获这个异常,并记录日志说明执行这个操作没有成功,但是自己的测试却是afterThrowing方法不会执行,而其他的after,afterreturn等都可以正常工作。
下面是class   OcsServices的add方法
        public   void   add(Object   o) 
        { 
                Prefix   oo   =   (Prefix)o; 

                Iterator   it   =     this.getDaoScpList().iterator(); 
                while(it.hasNext()) 
                { 
                        IPrefixDao   ipd   =   (IPrefixDao)it.next(); 
                        ipd.savePrefix(oo); 
                } 
        } 


希望各位大大能指导指导,是否是设计就有问题还是哪个配置不正确。谢谢
分享到:
评论

相关推荐

    Angular-and-meteor-are-throwing-a-party

    标题“Angular-and-meteor-are-throwing-a-party”暗示了这个项目是关于结合AngularJS和Meteor框架来构建一个交互式、实时的Web应用程序。在这个场景中,AngularJS作为一个强大的前端MVC(Model-View-Controller)...

    throwing-function, 已经检查的异常使用Java 8 功能接口 适配器.zip

    throwing-function, 已经检查的异常使用Java 8 功能接口 适配器 函数已经检查的异常使用了 Java 8 功能接口 适配器 提供了用于解决 Java 8检查的异常的快捷方式。你可以定义抛出checked异常的函数:ThrowingFunction...

    应用Spring AOP(五)-------XML配置方式

    4. 配置异常后通知(After Throwing Advice) 异常后通知在目标方法抛出异常后运行。使用`&lt;aop:after-throwing&gt;`: ```xml &lt;aop:after-throwing method="afterThrowingAdvice" throwing="ex" pointcut-ref=...

    如何通过XML方式配置AOP过程解析

    * AOP:after-throwing:用于配置异常通知,指定增强的方法在切入点方法抛出异常时执行。 * AOP:after:用于配置最终通知,指定增强的方法在切入点方法执行完成时执行。 XML方式配置AOP过程解析可以使得AOP配置更加...

    基于java的企业级应用开发:AspectJ开发.ppt

    - `&lt;aop:after-throwing&gt;`:异常抛出通知,在目标方法抛出异常后运行。 - `&lt;aop:after&gt;`:最终通知,在目标方法执行后,无论是否抛出异常都会运行。 2. **基于注解的声明式AspectJ**:这种方式使用Java注解直接在...

    aop的学习案例.rar

    3. **通知(Advises)**: 通知是在特定切点执行的代码,包括前置通知(before)、后置通知(after)、返回通知(after-returning)、异常通知(after-throwing)和环绕通知(around)。在XML配置中,我们可以使用...

    8Spring AOP盗梦空间之三 ——AfterThrowing

    Spring AOP支持五种通知类型:前置通知(Before)、后置通知(After)、返回通知(After Returning)、异常通知(After Throwing)和环绕通知(Around)。 `AfterThrowing`通知在方法抛出异常时执行,它允许我们在...

    异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt

    - **抛出异常(Throwing Exceptions)**:当异常发生时,使用`throw`关键字可以明确抛出一个异常对象,通知运行时系统有异常需要处理。 - **捕获异常(Catching Exceptions)**:使用`try-catch`语句块来捕获并...

    Spring AOP配置源码

    import org.springframework.stereotype.Component; @Component("userDAO") public class UserDao { public void say() { System.out.println("say method is called");...----------after-------------

    Spring AOP 的实现例子(基于XML配置实现)

    在XML配置中,我们可以使用`&lt;aop:before&gt;`、`&lt;aop:after&gt;`、`&lt;aop:after-returning&gt;`、`&lt;aop:after-throwing&gt;`和`&lt;aop:around&gt;`标签来定义不同类型的通知。 连接点(Join Point)是通知插入到应用程序中的位置,...

    java异常处理详细介绍

    - **抛出异常(Throwing Exceptions)**:当程序中出现异常情况时,会创建一个异常对象,并将其交给Java运行时系统。这个过程称为抛出异常。可以使用`throw`关键字显式抛出异常,或者由Java自动在遇到特定错误条件...

    spring使用动态代理面向切面编程(AOP) xml

    在Spring框架中,面向切面编程(AOP)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。本篇文章将深入探讨如何使用Spring的动态代理机制实现AOP...

    Spring_AOP开发

    }/**//异常通知@AfterThrowing(pointcut="interceptorMethod()", throwing="ex")public void doThrowing(Exception ex){System.out.println("This is Throwing Advice\t"+ex.getMessage());} *//* 定义环绕通知,...

    Java异常处理入门.pptx.pptx

    - **捕获(Catching)**:使用`try-catch`块捕获异常。`try`块包含可能会抛出异常的代码,`catch`块则包含处理特定异常的代码。 - **抛出(Throwing)**:当发现异常时,可以使用`throw`关键字抛出一个异常对象。...

    SpringAop xml方式配置通知

    3. **异常通知(After Throwing Advice)**:在目标方法抛出异常后调用,`aop:after-throwing`元素定义。 4. **环绕通知(Around Advice)**:包裹整个目标方法的执行,可以在方法前后执行自定义操作,`aop:around`...

    Java\课件\JAVA的异常处理机制.ppt

    - **抛出异常(Throwing)**:当语义限制被违反或者预期条件未满足时,Java会抛出异常。异常对象包含异常类型和程序状态信息。 - **捕获异常(Catching)**:异常抛出后,Java虚拟机从发生异常的代码开始,向上...

    java异常处理

    - 抛出(Throwing):当遇到无法正常处理的情况时,可以使用`throw`关键字抛出一个异常。 - 异常处理链(Exception Chaining):一个异常可以导致另一个异常的抛出,形成一个异常链。 2. 异常分类: - 检查性...

    【面试资料】-(机构内训资料)Spring面试题(含答案)_.zip

    - 如何定义和使用Aspect,以及通知类型(Before、After、Around、After-Throwing、After Returning)? 5. **Spring MVC**: - Spring MVC的架构组件及其职责是什么? - DispatcherServlet、Controller、...

    throwing-lambdas:抛出检查异常以用于函数式接口的methodinterfaceslambdas 的包装器

    compile( group : " com.github.fge " , name : " throwing-lambdas " , version : " 0.5.0 " ); 示例用法 例如,假设您想对文件树中所有常规文件的大小求和。 JDK 提供来遍历文件树; 因此,您可以过滤该流以仅列...

Global site tag (gtag.js) - Google Analytics