REQUIRES_NEW аннотированный метод выполняется без транзакции? - PullRequest
1 голос
/ 23 марта 2009

У меня есть 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, так что я мог пропустить что-то важное?

1 Ответ

0 голосов
/ 23 марта 2009

Я много пытался ее решить, и примерно через 16 часов или около того, похоже, работает. Я не уверен, что именно сделал, но это может быть обновление до Glassfish 2.1.

Наконец-то снова могу спать по ночам!

...