Frühling JTA Konfiguration - wie Transaction einstellen?
-
21-09-2019 - |
Frage
Wir konfigurieren unsere Frühlings-Transaktion im Frühjahr Config wie:
<tx:jta-transaction-manager/>
Ich nehme dies bedeutet, dass Frühling wird automatisch die zugrunde liegende JTA Implementierung entdecken. Wenn wir also JBoss starten sehen wir diese Nachrichten während Frühling gesucht:
[JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran
sactionManager]
javax.naming.NameNotFoundException: TransactionManager not bound
<<Big stack trace>>
<<More of the same>>
Und dann schließlich sehen:
[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction
Manager]
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT
ransaction@1f78dde
Die Frage ist - wie können wir unseren <tx:jta-transaction-manager/>
Tag bearbeiten, um explizit die java:/Transaction Manager
JTA Implementierung konfigurieren, so dass wir alle diesen Stack-Traces in den Protokollen vermeiden? (Ich würde es vorziehen, nicht nur auf die Ebene Log4J Logging ändern)
Aktualisieren : Ich <tx:jta-transaction-manager/>
mit dem unter Config ersetzt und es scheint zu funktionieren .. Ich vermute, das ist in Ordnung
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>
Lösung
Ja, das ist in Ordnung. Der Stack-Trace Sie sahen war auch in Ordnung: <tx:jta-transaction-manager/>
versucht, den Transaktionsmanager von einer Reihe von verschiedenen Standard-Standorten zu erwerben; für jede JNDI-Suche fehlgeschlagen, werden Sie die javax.naming.NameNotFoundException
sehen.
java:/TransactionManager
ist, wo JBoss standardmäßig bindet; andere Servlet-Container java:/comp/TransactionManager
ausfallen, was ich denke, sollte die „Standard“ Position für die TM sein.
Von der Frühling Referenz Dokumentation :
Für Standardszenarien, einschließlich WebLogic, WebSphere und OC4J betrachten mit der bequemen
<tx:jta-transaction-manager/>
Konfigurationselement. Dieser Wille automatisch erkennt die darunter liegende Server und wählen Sie die beste Transaktion Manager für die Plattform zur Verfügung. Dies bedeutet, dass Sie nicht haben wird configure serverspezifische Adapter Klassen (wie im Folgenden erörtert Abschnitte) explizit; sie werden vielmehr automatisch gewählt werden, wobei die StandardJtaTransactionManager
als Standardrückfall.
Andere Tipps
Ein gemeinsamer „Fehler“ ist, die Dinge zu bündeln wie jta.jar
und / oder jbossall-client.jar
in der J2EE-Komponente, die Sie bereitstellen. Überprüfen Sie bitte und entfernen Sie sie, wenn dies der Fall ist.