У нас есть 3 EJB для управления нашим бизнесом, как показано ниже:
@Stateless
public class BeanA {
@PersistenceContext(unitName = "primary")
private EntityManager em;
@EJB private BeanB beanB;
public void handle() {
EntityA entity= new EntityA();
....
beanB.handle();
em.persist(entity); //Transaction does not rollback and saved entity
}
}
@Stateless
public class BeanB {
@EJB private BeanC beanC;
public void handle() {
beanC.handle();
}
}
@Stateless
public class BeanC {
public void handle() {
try {
throw new RunTimeException("error occurred!!");
} catch(RunTimeException e) {
e.printStacktrace();
}
}
}
Согласно концепции JTA, что в случае возникновения RuntimeExcpetion текущая транзакция будет откатом, я ожидал, что вышеуказанная транзакция должна быть откатом, но не откатом. также мы используем Wildfly10 в качестве сервера приложений и активную опцию JTA = "true" в источниках данных.
Есть ли идеи по поводу этой проблемы?