configurazione di Spring JTA - come impostare TransactionManager?
-
21-09-2019 - |
Domanda
configuriamo la nostra transazione Primavera in primavera config come:
<tx:jta-transaction-manager/>
Mi sembra di capire questo significa che la primavera scoprirà automaticamente l'implementazione JTA sottostante. Così, quando iniziamo a JBoss vediamo questi messaggi mentre ricerche Primavera:
[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>>
E poi alla fine vedere:
[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction
Manager]
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT
ransaction@1f78dde
La domanda è - come possiamo modificare il nostro tag <tx:jta-transaction-manager/>
configurare esplicitamente l'attuazione JTA java:/Transaction Manager
così evitiamo tutte queste tracce di stack nei log? (Mi piacerebbe Preferisco non cambiare solo i livelli di registrazione Log4J)
Aggiorna : ho sostituito <tx:jta-transaction-manager/>
con la configurazione qui sotto e sembra funzionare .. sto cercando di indovinare questo è bene
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>
Soluzione
Sì, che va bene. L'analisi dello stack si stava vedendo era anche bene: <tx:jta-transaction-manager/>
tenta di acquisire il gestore delle transazioni da un certo numero di luoghi diversi standard; per ogni ricerca JNDI fallito, vedrete il javax.naming.NameNotFoundException
.
java:/TransactionManager
è dove JBoss si lega al default; altri contenitori servlet default java:/comp/TransactionManager
, che credo dovrebbe essere la posizione "standard" per la TM.
di riferimento Primavera documentazione :
Per gli scenari standard, tra cui WebLogic, WebSphere e OC4J, prendere in considerazione utilizzando il comodo
<tx:jta-transaction-manager/>
elemento di configurazione. Questo sarà rilevare automaticamente sottostante, server e scegliere la migliore transazione Manager disponibile per la piattaforma. Questo significa che non si dovrà configurare adattatore specifico del server classi (come discusso nel seguito sezioni) esplicitamente; essi saranno piuttosto essere scelto automaticamente, con laJtaTransactionManager
standard di default fallback.
Altri suggerimenti
Un "errore" comune è quello di riunire le cose come jta.jar
e / o jbossall-client.jar
nel componente J2EE si distribuisce. Doppio controllo per favore e rimuoverli se questo è il caso.