Ich habe eine statusfreie Bean, die für persistierende Entitäten in einer Datenbank verantwortlich ist. Diese statusfreie Bean wird von der onMessage-Methode einer Message Bean aufgerufen. Die verdrahtete Sache ist, dass bei der ersten Nachricht alles gut funktioniert, aber bei der nächsten Nachricht wird die für das Persistieren verantwortliche Methode außerhalb einer Transaktion aufgerufen, obwohl die Methode mit REQUIRES_NEW versehen ist.REQUIRES_NEW mit Anmerkungen versehene Methode wird ohne eine Transaktion ausgeführt?
@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;
}
Aufruf Refresh löst die folgende Ausnahme:
Verursacht durch: javax.persistence.TransactionRequiredException: keine Transaktion im Gange ist
Irgendwelche Ideen? Ich bin ziemlich neu in JTA, also habe ich vielleicht etwas Wichtiges verpasst?