2009-03-22 2 views
1

У меня есть фасол без состояния, который можно использовать для сохраняющихся объектов в базе данных. Этот факсимильный компонент вызывается методом сообщения onMessage. Проводная вещь заключается в том, что в первом сообщении все работает нормально, но в следующем сообщении метод, ответственный за сохранение, вызывается вне транзакции, хотя метод аннотируется с помощью REQUIRES_NEW.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, поэтому, возможно, я пропустил что-то важное?

ответ

0

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

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

Смежные вопросы