@Stateless @LocalBean
public class MySLSB {
@Resource
SessionContext ctx;
@PersistenceContext(unitName = "myPU")
EntityManager em;
public void T1() {
em.persist(new MyEntity(1L)); //T1 created!
/* wrong call to plain java object
T2();
*/
//corrected by lookup its business object first
ctx.getBusinessObject(MySLSB.class).T2();
ctx.setRollbackOnly();
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void T2() {
em.persist(new MyEntity(2L)); //T2 created!
}
}
Клиент звонит T1(), сначала T2 как новая сделка должна быть совершена, но T1 будет откат.EJB CMT TransactionAttributeType.REQUIRES_NEW не работает
Ожидаемый результат:
Т1: вставить в MyEntity Set ID = 1;
T2: вставить в набор myentity id = 2;
T2: commit;
T1: откат;
-> Строка с id = 2 создана в БД.
Фактический результат:
вставки в MyEntity Set ID = 1;
Вставить в myentity set id = 2;
откатный;
-> Ничего не создано в БД.
В чем проблема? Большое спасибо!