У меня есть bean-компонент без сохранения состояния, который можно сохранять в базе данных. Этот bean-компонент без сохранения состояния вызывается методом onMessage bean-компонента сообщения. Дело в том, что в первом сообщении все работает нормально, но в следующем сообщении метод, ответственный за сохранение, вызывается вне транзакции, даже если метод помечен как REQUIRES_NEW.
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public StateChange persistChange(long deviceId, ...) {
...
StateChange change = new StateChange(...);
em.persist(change);
em.refresh(change); // To provoke the error
return change;
}
Вызов обновления вызывает следующее исключение:
Причина: javax.persistence.TransactionRequiredException: транзакция не выполняется
Есть идеи? Я довольно новичок в JTA, так что я мог пропустить что-то важное?