Ich muss die verschiedenen Ressourcen in meiner Anwendung wie jms und Datenbank
verwaltenBeim Betrachten von Transaktionsmanagern, die mehrere Ressourcen verwalten können, stieß ich auf zwei Transaktionsmanager JtaTransactionManager und ChainedTransactionManager , die fast behaupten, dass sie mehrere Ressourcen verwalten können.
Kann jemand erklären, was für ein großer Unterschied in ihnen ist? und wann sollte ich welche verwenden?
Wie die Dokumentation sagt: ChainedTransactionManger-Dokument :
PlatformTransactionManager-Implementierung, die die Transaktionserstellung, das Commit und das Rollback auf eine Delegatenliste koordiniert. Bei der Verwendung dieser Implementierung wird davon ausgegangen, dass Fehler, die zu einem Rollback der Transaktion führen, in der Regel vor Abschluss der Transaktion oder während der Festschreibung des innersten PlatformTransactionManager auftreten. Die konfigurierten Instanzen starten die Transaktionen in der angegebenen Reihenfolge und commit / rollback in umgekehrter Reihenfolge, was bedeutet, dass der PlatformTransactionManager, der die Transaktion wahrscheinlich bricht, der letzte in der konfigurierten Liste sein sollte. Ein PlatformTransactionManager, der während der Festschreibung eine Ausnahme auslöst, führt automatisch dazu, dass die verbleibenden Transaktionsmanager zurückgesetzt werden, anstatt zu committen.
Dies bedeutet, dass Sie einen ChainedTransactionManager erstellen können, indem Sie mehrere Transaktionsmanager übergeben. Wenn für einen Transaktionsmanager eine Ausnahme auftritt, wird für alle Transaktionsmanager ein Rollback in der umgekehrten Reihenfolge generiert, in der sie angegeben sind
PlatformTransactionManager-Implementierung für JTA, die an einen Back-End-JTA-Provider delegiert wird. Dies wird normalerweise zur Delegierung an den Transaktionskoordinator eines Java EE-Servers verwendet, kann jedoch auch mit einem lokalen JTA-Provider konfiguriert werden, der in die Anwendung eingebettet ist. Dieser Transaktionsmanager ist geeignet für die Behandlung verteilter Transaktionen, d. H. Transaktionen, die sich über mehrere Ressourcen erstrecken, und für die Steuerung von Transaktionen auf Anwendungsserverressourcen (z. B. JDBC-DataSources, die in JNDI verfügbar sind) im Allgemeinen. Für eine einzelne JDBC-DataSource ist DataSourceTransactionManager vollkommen ausreichend, und für den Zugriff auf eine einzelne Ressource mit Hibernate (einschließlich transaktionalem Cache) ist beispielsweise HibernateTransactionManager geeignet.
Sie können diesen Transaktionsmanager für die Verwaltung verteilter Transaktionen für mehrere Ressourcen verwenden
Tags und Links java spring transactions spring-transactions