JPA JPA Transaktionen für Web-Application und Desktop-Client

Diskutiere JPA Transaktionen für Web-Application und Desktop-Client im Data Tier Forum; Ich habe eine JPA Datenbankanwendung, bei der die Entities und die Zugriffsklassen darauf als gemeinsame Bibliothek ausgelagert sind. Die...

  1. Centai
    Centai Neues Mitglied
    Ich habe eine JPA Datenbankanwendung, bei der die Entities und die Zugriffsklassen darauf als gemeinsame Bibliothek ausgelagert sind. Die Zugriffsklassen nehmen dabei eine Entity-Manager im Konstruktur auf.

    Die Bibliothek wird zum einen von einer Web-Anwendung verwendet (EJBs), bei welcher der EntityManager vom Container verwaltet wird und dieser per @PersistenceContext instanziiert wird. Dort ist JTA für Transaktionen festgelegt.

    Der Desktop-Client dagegen ist eine einfache JavaSE-Anwendung, welche EclipseLink benutzt und den Entity-Manager lokal über RESOURCE_LOCAL erzeugt.

    Für Datenabfragen funktioniert die gemeinsame Nutzung der Bibliothek wunderbar. Nur wenn es um Transaktionen geht, gibt es Probleme. Bei JavaEE muss JTA verwendet werden und unter JavaSE aktuell lokale Transaktionen.

    Was ist der beste Ansatz, um einen gemeinsamen Zugriff von JavaEE und SE auf die Datenbank mit Transaktionen zu realisieren?
    Aktuell habe ich zwei Ansätze:
    1. Fallunterscheidung bei den Zugriffsklassen, um was für einen Entity-Manager es sich handelt. Finde ich aber unschön, weil es den Code aufbläht.
    2. In der JavaSE-Anwendung auch JTA verwenden. Ich habe auch schon mit Atomikos experimentiert, aber konnte es bis jetzt nicht zum laufen bringen. Wenn ich es richtig verstehe, wird dann auch ein lokales JNDI benötigt ect. und hat dann doch einen ganz schönen Rattenschwanz.

    Hat jemand Erfahrung in diesem Bereich?
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. CptSocket
    CptSocket Mitglied
    Hallo Centai

    Wurde schonmal überlegt, den Zugriff auf die Datenbank in eine von der WebApplikation und Desktop-Client gemeinsam genutze Serverkomponente auszulagern? (Also nicht wie Beschrieben eine gemeinsam genutzte Library, sondern gemeinsam genutzte Services, welche auf einem Server laufen. So wie die Frage formuliert ist, könnte das aber zu einem grösseren Umbau werden ...)

    Dies könnte etwa folgendermassen aussehen:
    Den Anhang 7594 betrachten

    Variante 1 / Idealfall:
    Der Server bietet Services an, welche sowohl vom Web- als auch vom Desktop-Client verwendet werden.

    Variante 2 / eher zu vermeiden:
    Der Server bietet die Persistenzoperationen sowohl dem Web- als auch dem Desktop-Client an. Der Unterschied zu der in der Frage beschriebenen Ausgangslage ist, dass der DB-Zugriff immer über den Server läuft. Es gibt also in Bezug auf Transaktionen keinen Unterschied von Web- zu Desktop-Client.

    Ob jetzt der Web-Client in der gleichen Applikation wie die Services und Persistenz läuft oder ob das separate Applikationen sind, ist natürlich Geschmacksache und abhängig von den Anforderungen.


    Freundliche Grüsse
    CptSocket
     
Die Seite wird geladen...

JPA Transaktionen für Web-Application und Desktop-Client - Ähnliche Themen

Problem mit EJBs und Transaktionen
Problem mit EJBs und Transaktionen im Forum Data Tier
Transaktionen von mehreren Anwendungen aus - JDBC
Transaktionen von mehreren Anwendungen aus - JDBC im Forum Datenbankprogrammierung
Transaktionen funktionieren nicht
Transaktionen funktionieren nicht im Forum Application Tier
Grundsätzliche Frage zu JPA, mehreren Enitäten und Transaktionen
Grundsätzliche Frage zu JPA, mehreren Enitäten und Transaktionen im Forum Data Tier
Geschachtelte Transaktionen in einem DBMS
Geschachtelte Transaktionen in einem DBMS im Forum Datenbankprogrammierung
Thema: JPA Transaktionen für Web-Application und Desktop-Client