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>
È stato utile?

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 la   JtaTransactionManager 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top