如何在Timeout / Scheduler方法期间启动新事务

时间:2015-04-10 13:46:59

标签: timer transactions java-ee-6

EJB计时器是事务对象。但是在计时器期间如何启动新的交易呢?

示例:

@Timeout
public void foo(...) {
...
@Inject
Worker worker;
...
worker.doSometing();
...
}
---
Worker {
@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
public void doSomething(){
    //TODO
    }
}

不起作用。甚至用UserTransaction测试也没有成功。

解决方案: 如果worker类是CDI,则TransactionAttributeType.REQUIRES_NEW将不会调用新事务。如果worker类是EJB,它似乎有效。在我的情况下,我只是添加注释@Statless(Statefull也应该工作)为工作者调用

0 个答案:

没有答案