Configuración Spring JTA: ¿cómo configurar TransactionManager?

Configuramos nuestra transacción Spring en Spring config como:

 

Supongo que esto significa que Spring descubrirá automáticamente la implementación JTA subyacente. Entonces, cuando iniciamos JBoss, vemos estos mensajes mientras Spring busca:

 [JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran sactionManager] javax.naming.NameNotFoundException: TransactionManager not bound <> <> 

Y luego, finalmente, ver:

 [JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction Manager] [JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT ransaction@1f78dde 

La pregunta es: ¿cómo podemos editar nuestra etiqueta para configurar explícitamente la implementación JTA de java:/Transaction Manager para evitar todos estos rastros de stack en los registros? (Prefiero no cambiar los niveles de registro de Log4J)


Actualización : reemplacé con la siguiente configuración y parece que funciona … supongo que esto está bien.

    

Sí, eso está bien. El seguimiento de la stack que estaba viendo también estaba bien: intenta adquirir el administrador de transacciones desde una serie de ubicaciones estándar diferentes; para cada búsqueda JNDI fallida, verá la javax.naming.NameNotFoundException .

java:/TransactionManager es donde JBoss se enlaza de forma predeterminada; otros contenedores de servlets por defecto serán java:/comp/TransactionManager , que creo que se supone que es la ubicación “estándar” para la TM.

De la documentación de referencia de Spring :

Para escenarios estándar, incluidos WebLogic, WebSphere y OC4J, considere usar el elemento de configuración conveniente . Esto detectará automáticamente el servidor subyacente y elegirá el mejor administrador de transacciones disponible para la plataforma. Esto significa que no tendrá que configurar clases de adaptador específicas del servidor (como se explica en las siguientes secciones) explícitamente; preferirán ser elegidos automáticamente, con el JtaTransactionManager estándar como JtaTransactionManager predeterminado.

Un “error” común es agrupar cosas como jta.jar y / o jbossall-client.jar en el componente J2EE que implementa. Por favor, vuelva a comprobar y eliminarlos si este es el caso.