假设有一个结构如下的 EJB:
@Stateless
public class MyBean {
@PersistenceContext
private EntityManager entityManager;
public void doSomething() {
...
doAsynchronously();
...
entityManager.persist(someObject);
...
if (...) {
throw new RuntimeException();
}
}
public void doAsynchronously() {
...
entityManager.persist(someOtherObject);
...
}
}
是否正确,当在同步部分引发异常并因此回滚事务时,异步调用不受此影响,并且如果该方法中没有发生错误,实体管理器上的操作应该正确完成?
我发现了很多关于异步 bean 的例子,但在这两种情况下都没有结合使用实体管理器,所以如果有人能引导我找到一个,我会很高兴。
编辑 2013/08/22:
另一个问题 - 代码片段中显示的设置的全部原因是确保代码doAsynchronously()
可以完全完成其对实体的操作,无论调用者方法中是否发生异常 - 所以我会得到相同的行为如果我不使用@Asynchronous
注释@TransactionAttribute(REQUIRES_NEW)
?