Problem mit EJBs und Transaktionen

KickerProfi

Neues Mitglied
Hallo liebe Forum-Member,

ich arbeite an einem JEE 6 (JSF) Projekt und benutze für die Datenverwaltung JPA (EclipseLink 2.0).
Mein Problem ist folgendes:

Ich möchte zwei Entities nacheinander speichern. Zuerst soll Entity A geschpeichert werden und anschließend Entity B. Geht dabei etwas schief (entweder bei A oder B), soll keine der beiden Entitäten in der Datenbank vorhanden sein.

Ich habe es so versucht:

In der ManagedBean benutze ich EJBs
@EJB
private ComputerFacade ComputerService;
@EJB
DeviceFacade deviceService;

Diese sind Stateless SessionBeans und benutzen den EntityManager für die Verwaltung der Entitäten:
@PersistenceContext(unitName = "Inv3PU")
private EntityManager em;

Das Problem tritt dabei auf wenn ich folgendes versuche:


Java:
   ComputerService.getEntityManager.getTransaction.begin();
   ComputerService.getEntityManager.getTransaction.begin();
   try {
   ComputerService.persist(entity);
   deviceService.persist(entity);
   ComputerService.getEntityManager.getTransaction.commit();
   ComputerService.getEntityManager.getTransaction.commit();
      }
catch (Exception e)
{
   ComputerService.getEntityManager.getTransaction.rollback();
   ComputerService.getEntityManager.getTransaction.rollback();
}
}

Ich bekomme eine Exception Exception Description: Cannot use an EntityTransaction while using JTA.. Nun ich weiß, dass der ApplicationServer sich selbst um die Transaktionen kümmert. In diesem Fall muss ich aber beide Speichern-Operationen unter eine Decke bekommen. Leider bin ich da etwas ratlos.

Bin für jeden Vorschlag dankbar.
 
Zuletzt bearbeitet:

Zurück
Oben