2010-03-11 9 views
11

Ich speichere Dateiattribute (Größe, Aktualisierungszeit ...) in der Datenbank. Das Problem ist also, wie man die Transaktion für Datenbank und Datei verwaltet.Wie wird die Transaktion für Datenbank und Dateisystem in Java EE-Umgebung verwaltet?

In einer Java EE-Umgebung kann JTA nur Datenbanktransaktionen verwalten. Falls die Aktualisierung der Datenbank erfolgreich ist, aber die Dateioperation fehlschlägt, sollte ich die Datei-Rollback-Methode dafür schreiben? Darüber hinaus verstößt der Dateivorgang im EJB-Container gegen die EJB-Spezifikation.

Was ist Ihre Meinung?

Antwort

5

Der Zugriff auf externe Ressourcen wie ein Dateisystem sollte idealerweise über einen JCA-Connector erfolgen. Obwohl es um Diskussion dieser mehrere Beiträge sind, habe ich nie eine ready-to-verwenden JCA-Anschluss für die Transaktions Zugriff auf das Dateisystem, also fing ich an zu schreiben:

In Bezug auf andere Projekte:

Beachten Sie, dass, sobald Transaktions ist, wie Sie mehr als ein Transaktionsteilnehmer haben, die App. Server müssen wirklich verteilte Transaktionen verwenden und die Dinge werden komplizierter. Sie dürfen diese Komplexität nicht unterschätzen (z. B. Datenbank haben einen anderen Timeout-Mechanismus für verteilte Transaktionen).

Ein weiterer leicht zu betrachtender Ansatz ist die Verwendung eines SFSB, der auf das Dateisystem schreibt. Wenn Sie SessionSynchronization Schnittstelle implementieren, erhalten Sie beforeCompletion und afterCompletion Rückrufe. Letzteres gibt an, ob die Transaktion festgeschrieben oder zurückgesetzt wurde und Sie bei Bedarf bereinigen. Sie können dann ein Transaktionsverhalten implementieren.

3

manuell. Sie müssen wahrscheinlich kompensatorische Transaktionen dafür schreiben.

4

JTA ist nicht einfach für Datenbanken, es kann lange mit jeder anderen Ressource verwendet werden, wenn diese Ressource XA-Transaktion unterstützt. Zum Beispiel ermöglicht XADisk eine solche Integration von Dateisystemen mit XA-Transaktionen. Daher kann es auch das Problem der Dateisystem- und Datenbankkonsistenz lösen, das Sie versucht haben zu lösen.

Hoffe, dass hilft.

Nitin

+1

+1 Ich hatte noch nie davon gehört. Das ist gut zu wissen. – ewernli