【发布时间】:2013-08-21 12:56:30
【问题描述】:
假设有一个结构如下的 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) 进行注释,我会得到相同的行为吗?
【问题讨论】:
标签: asynchronous jpa-2.0 java-ee-6