Problem mit EJBs und Transaktionen

Dieses Thema Problem mit EJBs und Transaktionen im Forum "Data Tier" wurde erstellt von KickerProfi, 8. Feb. 2014.

Thema: Problem mit EJBs und Transaktionen Hallo liebe Forum-Member, ich arbeite an einem JEE 6 (JSF) Projekt und benutze für die Datenverwaltung JPA...

  1. 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:


    Code (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: 8. Feb. 2014
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*