Предположим, имеющий EJB структурирована следующим образом:метод асинхронной 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);
...
}
}
Верно ли, что, когда исключение в синхронной части и тем самым выполняется откат транзакции, асинхронный вызов не это повлияло на это, и операции над менеджером сущности должны закончить правильно, если в этом методе не возникает ошибка?
Я нашел много примеров асинхронных бобов, но не в сочетании с работой над менеджером сущности в обоих случаях, поэтому, если кто-то может привести меня к одному, я буду счастлив.
EDIT 2013/08/22:
Дополнительный вопрос - вся причина для установки, как показано на фрагменте кода должен был быть уверен, что код doAsynchronously()
может полностью закончить свою работу на сущности, независимо от того, возникает ли исключение в методе вызывающего абонента - так будет ли я получать такое же поведение, если я вместо использования @Asynchronous
аннотирую с @TransactionAttribute(REQUIRES_NEW)
?
Спасибо за подтверждение. Я знаю, что 2-е решение синхронно, но, как я сказал, было намерение завершить некоторые операции с объектами, даже если другие откатываются из-за исключения, а не то, что он выполняется асинхронно. –