Unterschied zwischen einer "jta-Datenquelle" und einer "ressourcenlokalen" Datenquelle?
Die Begriffe "jta-datasource" und "resource-local datasource" sind ein wenig vage, um mich. Ich bin das hinstellen, was ich verstehe ( oder vorausgesetzt ), und ich möchte Ihnen sagen, wo ich bin, richtig /falsch.
- Auf die gleiche Datenbank kann bezeichnet werden als eine jta-datasource-oder als Ressource der lokalen datasource
- Wenn erwähnt, als jta-datasource, dann die Bohnen /andere Klassen können JTA. Daher UserTransaction-Schnittstelle
- Nicht verwenden CMT /BMTwenn die datasource ist Ressourcen-lokale
- Wenn erwähnt, als Ressource der lokalen Datenquelle, die Transaktionen sind nicht JTA bewusst. Code verwenden können EntityTransaction-interface, aber nicht UserTransaction-Schnittstelle
Dank!
InformationsquelleAutor der Frage stratwine | 2010-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, Sie beziehen sich eigentlich auf die
jta-datasource
undnon-jta-datasource
Elemente. Kurz gesagt:jta-datasource
- element wird verwendet, zu erklären, dass die JNDI-Namen der JTA-data-Quelle, die verwendet werden, um verbindungen. Dies ist der häufigste Fall.non-jta-data-source
sollte verwendet werden, zu erklären, dass die JNDI-Namen des non-JTA-data-source.Dies ist korrekt. Und ich habe nicht erwähnt, dass nur oben, sondern einige Anbieter erlauben sogar, zu erklären, sowohl
jta-datasource
und einenon-jta-datasource
und die später für das optimierte Lesen durch non-JTA-verbindungen (d.h. nicht verknüpft werden, um eine laufende JTA-Transaktion).Der erste Teil ist richtig, der Letzte Teil nicht ganz. Von der EJB-3.0-Spezifikation, Abschnitt 13.3.4 Enterprise-Beans Mit Container-Managed Transaction Demarcation:
Und Abschnitt 16.12 UserTransaction-Schnittstelle:
In anderen Worten, die
UserTransaction
- Schnittstelle ist nicht verfügbar CMT enterprise beans.Die Formulierung ist ein wenig verwirrend hier, aber ich würde sagen, dass dies streng genommen nicht korrekt. Aus der JPA 1.0 Spezifikation, Abschnitt § 5.5 Steuern von Transaktionen:
Und Abschnitt 6.2.1.2 transaction-type
So KÖNNEN Sie eine application-managed entity manager das kann ein resource-local entity manager (müssen Sie injizieren eine
EntityManagerFactory
zu Holen Sie sich die EM von ihm in diesem Fall) und es wird nicht Teil einer JTA-Transaktion. Sehen dieses (sehr interessante) Diskussion.Wieder, die Formulierung ist ein wenig verwirrend, aber ich würde sagen, dass das richtig ist.
InformationsquelleAutor der Antwort Pascal Thivent