截取的Grails服务方式的交易

时间:2015-02-26 13:20:10

标签: grails transactions grails-plugin spring-transactions grails-services

创建了一个插件,它将拦截对原始方法完成后调用另一个方法(不在同一服务中)的grails-services方法的所有方法调用。

我在doWithDynamicMethods中添加了以下代码。

for (serviceClass in application.serviceClasses){
        serviceClass.metaClass.invokeMethod = { String name, args ->
        //execute the original method
        def metaMethod = delegate.metaClass.getMetaMethod(name, args)
        def result = metaMethod.invoke(delegate, args)

        //execute additional method on other bean
        def otherbean.doSomething(Object object)

        return result
        }
 }

一切正常,并且每次调用otherbean.doSomething(),但后来我意识到如果由otherbean.doSomething()抛出任何异常,则原始方法中完成的数据库更改不会回滚。

似乎交易的范围仅涵盖原始方法,并在原始方法调用完成后立即提交。

有没有办法在同一个交易中执行原始方法和附加方法?

注意:otherbean不是grails服务

0 个答案:

没有答案