In JBoss/WildFly soll ich aktivieren JTA-Datenquelle zu verwenden mit JPA?
In JBoss/WildFly, bei der Konfiguration einer Datenquelle gibt es eine JTA-option, die standardmäßig deaktiviert ist:
<datasource jta="false" jndi-name="java:/wt/testds" pool-name="testds" enabled="true" use-ccm="false">
...
</datasource>
Nun möchte ich verknüpfen diese Daten-Quelle mit mit JPA, JTA Transaktion-Typ:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="test" transaction-type="JTA">
<jta-data-source>java:/wt/testds</jta-data-source>
</persistence-unit>
</persistence>
Kann ich auch aktivieren müssen JTA auf die Datenquelle?
Wie die anderen Antworten, ich würde empfehlen, setzen Sie es auf true. Ich verbrachte eine Menge Zeit zum Debuggen ein Problem, bei dem rollback hat nicht funktioniert, weil es auf false festgelegt wurde. Details: stackoverflow.com/questions/16897063/...
InformationsquelleAutor Zhao Yi | 2014-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, natürlich müssen Sie zum aktivieren der JTA für ein datasource-wenn Sie möchten, jta-Transaktionen!
Ihre XML/JBoss/Wildfly config-Datei wie folgt Aussehen:
In unserer webapp persistence-unit, die datasource wie folgt aussieht:
Den
transaction-type="JTA"
ist nicht notwendig, zumindest nicht in meinem setup (Wildfly 8.1).In Ihrem Java-code, den Sie gehen können, wie dies zur Verwendung von Transaktionen:
Und wenn Sie benötigen, um rollback, Sie dies tun:
Gibt es eine Menge von Ressourcen zu diesem, finden Sie über Google.
InformationsquelleAutor cslotty
Habe ich gerade erlebt, ein problem im Zusammenhang mit diesem Problem.
Ich lief eine container-verwaltete Transaktion mit rund 20.000 Einsätze in einer MySQL-Datenbank.
Die Transaktion fehlgeschlagen ist zufällig, manchmal nach rund 3.500 Einsätze, zu anderen Zeiten nach rund 6.000 Einsätze, etc.
Nach der Untersuchung fand ich, dass die JTA-option auf dem WildFly datasource-definition auf false festgelegt wurde.
Ändern Sie diese Einstellung auf true, das problem wurde behoben, so Stimme ich mit @user3472929, JTA-sollte auf true gesetzt werden in der datasource-definition, es sei denn, Sie haben einem bestimmten Grund nicht.
InformationsquelleAutor cbl.adp
Ich glaube, Sie sollten jta. Und wenn Sie jta auf false in der container-Konfiguration-Datei, jta deaktiviert für JPA, damit die Transaktion-Typ für JPA wird "RESOURCE_LOCAL", die einige unangenehme Nebenwirkungen. Durch die Art und Weise, jta ist wahr, in der container-Konfiguration-Datei standardmäßig.
InformationsquelleAutor Xiaodong Xie