如果我在Action的execute方法中调用多个xxxService类,其中一个出异常了,我想把所有Service的操作全部回滚,
怎样配置啊?之前<value>*Service</value>是用来切Service的,
现在我改为<value>*Action</value>了,就不能回滚了。
而且我把Service的异常全部都抛给Action了,还是不行。
<bean id="beanproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*Service</value><!--就改这里啦。。-->
</property>
<property name="interceptorNames">
<list>
<value>transactionAdvisor</value>
</list>
</property>
</bean>
怎样配置啊?之前<value>*Service</value>是用来切Service的,
现在我改为<value>*Action</value>了,就不能回滚了。
而且我把Service的异常全部都抛给Action了,还是不行。
<bean id="beanproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*Service</value><!--就改这里啦。。-->
</property>
<property name="interceptorNames">
<list>
<value>transactionAdvisor</value>
</list>
</property>
</bean>
解决方案 »
- 请问怎么判断一个网站有没有坏掉啊??
- hibernate 一对一 多对一 配置问题
- 用xfire+Spring开发webservice接口问题
- 有几个问题想问问大家?
- 如果您知道请告诉我!hibernate-extensions问题
- 帮忙看下这个异常(在线等)
- jboss的通信跨不了防火墙该咋办呀,再线等待!!!!!!!!!!!!
- 难道j2ee1.4不带cloudspace服务器?晕!
- 〓〓〓〓■■■■在ejb这一层,如何实现这样的功能????■■■■〓〓〓〓
- JBuilder4(or 5)如何开发EJB
- 如何在xp系统下使用Xshell 等工具 连接 vm下的linux
- 文章内容检查是否类似如何实现?
<aop:config>
<aop:pointcut id="serviceMethods"
expression="execution(* com.xxx..service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
</aop:config>
2、一个Action调用多个Service,而你的事务管理控制在Service层,当然不能全部回滚啦,把多个Service都封装在一个Service里吧,然后为这个Service添加事务管理
什么做嘛
最好的做法就是把你的几个service封装为一个Service,并为它添加事务管理。
而且,按照你的情况,Action肯定不是不是Spring管理的,如果你现在把它交给Spring管理,Action层的整个配置和Spring的配置文件都要改,每个Action都要配置,用注解或者XML配置都要改很多,你更加痛苦
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="baseTransactionProxy" name="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="upload*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="clear*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="create*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="send*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="copy*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="end*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="count*">PROPAGATION_REQUIRED</prop>
<prop key="verify*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="superviseAmountMgr" class="syhy.modules.office.deal.bslogin.SuperviseAmountMgr">
<property name="persistOperations">
<ref bean="persistOperations"/>
</property>
</bean>
<bean id="superviseAmountMgrProxy" name="superviseAmountMgrProxy" parent="baseTransactionProxy">
<property name="target">
<ref local="superviseAmountMgr"/>
</property>
</bean>
注意关键在这 : <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>