Pregunta

Configuramos nuestra transacción de primavera en primavera config como:

<tx:jta-transaction-manager/>

recojo esto significa que la primavera va a descubrir automáticamente la implementación JTA subyacente. Así que cuando ponemos en marcha JBoss vemos estos mensajes, mientras que las búsquedas de 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>>

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 modificar nuestra etiqueta <tx:jta-transaction-manager/> a configurar de forma explícita la aplicación java:/Transaction Manager JTA así que evitar todos estos seguimientos de pila en los registros? (I prefiere no acabo de cambiar los niveles de registro Log4J)


Actualizar :? He sustituido <tx:jta-transaction-manager/> con el siguiente config y parece que funciona .. supongo que esto está bien

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManagerName" value="java:/TransactionManager"/>
</bean>
¿Fue útil?

Solución

Sí, eso está bien. El seguimiento de pila que estaban viendo era también bien: <tx:jta-transaction-manager/> intenta adquirir el administrador de transacciones de una serie de diferentes lugares estándar; para cada fallidos JNDI de búsqueda, verá el javax.naming.NameNotFoundException.

java:/TransactionManager es donde JBoss se une a por defecto; otros contenedores servlet por defecto a java:/comp/TransactionManager, que creo que se supone que es la ubicación "estándar" para el TM.

Desde el referencia primavera documentación :

  

Para escenarios estándar, incluyendo   WebLogic, WebSphere y OC4J, considere   mediante el conveniente   <tx:jta-transaction-manager/>   elemento de configuración. Esta voluntad   detectará automáticamente el subyacente   servidor y elegir la mejor transacción   gerente disponible para la plataforma.   Esto significa que usted no tendrá que   adaptador de servidor de configuración específica   clases (como se discute en la siguiente   secciones) de manera explícita; más bien se   ser elegido de forma automática, con el   JtaTransactionManager estándar   defecto de reserva.

Otros consejos

Un común "error" es agrupar cosas como jta.jar y / o jbossall-client.jar en el componente de J2EE de implementar. Verifique por favor, y eliminarlos si este es el caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top