2015-10-18 3 views
9

Ich brauche die mehrere Ressourcen in meiner Anwendung wie jms und DatenbankUnterschied zwischen JtaTransactionManager und ChainedTransactionManager?

Während Blick auf Transaktionsmanager zu verwalten, die ich mehrere Ressourcen Räude kann über 2 Transaktionsmanager kam JtaTransactionManager und ChainedTransactionManager die fast Ansprüche Sie können mehrere Ressourcen verwalten.

Kann jemand erklären, was Hauptunterschied in ihnen ist? und wann sollte ich welche verwenden?

Antwort

3

Als Dokumentation sagt: ChainedTransactionManger doc:

PlatformTransactionManager Implementierung, die Transaktion Schaffung orchestriert, verpflichtet und Rollbacks zu einer Liste von Personen. 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 Transaktionen in der angegebenen Reihenfolge und commit/rollback in umgekehrter Reihenfolge, was bedeutet, dass der PlatformTransactionManager, der am wahrscheinlichsten die Transaktion 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 eine Ausnahme ein Zurückkehren zu einer Transaktion Krippe auftreten wird für alle Transaktionsmanager in der umgekehrten Reihenfolge, wie sie angegeben sind

JtaTransactionManager doc erzeugt werden: für JTA

PlatformTransactionManager Implementierung zu einem Backend-JTA-Provider zu delegieren. 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 eignet sich zur Behandlung verteilter Transaktionen, d. H. Von Transaktionen, die sich über mehrere Ressourcen erstrecken, und zur Steuerung von Transaktionen auf Anwendungsserverressourcen (z. B. JDBC-DataSources in JNDI) 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.

können Sie diese Transaktionsmanager verwenden für die verteilte Verwaltung von Transaktionen für mehrere Ressourcen