基本Spring事务问题 - WebLogicJTATransactionManager / RequiresNew

时间:2011-03-24 03:49:22

标签: spring

我有AOP拦截对启动REQUIRED事务的方法的调用。在方法逻辑期间,抛出异常。但是捕获异常以便可以通过启动RequiresNew的不同类/方法上的新AOP切入点将一条数据写入db。这个RequiresNew应该提交正常,一旦完成,它应该重新抛出原始异常,导致REQUIRED事务回滚。这似乎不起作用。这是因为即使RequiresNew存在于自己的事务中,如果它存在于一个需要回滚的REQUIRED事务中......这会影响RequiresNew事务吗?

...谢谢杰

1 个答案:

答案 0 :(得分:0)

第二种方法是一个嵌套的事务,它有自己的开始和放大器。结束。它不会意识到第一个例外。既然你无论如何都要抓住这个例外,为什么不再把它扔掉呢?

另外为什么需要削减异常点?提出异步处理的事件/消息是不是很简单,让我们说一个ExceptionListener?

RequiresNew方法不会知道异常&将是一个单独的嵌套事务。所以..

需要方法

尝试{

...

} catch(例外e){

//调用带有RequiresNew的方法/切入点,除非RequiresNew方法中有更多异常,否则这应该通过。

抛出新的异常(“交易失败”);

}