2010-09-28 22 views
12

He encontrado un problema extraño con la transacción de primavera. Mi aplicación usa Spring con EJB. Los EJB también invocan clases de servicio Spring anotadas con @Transaction. He utilizado Spring JtaTransactionManager para la gestión de transacciones. La aplicación está empaquetada como un archivo EAR y se implementa en jboss5.0 y funciona bien. Pero cuando indico a Jboss que use un cargador de clases separado para cada aplicación EAR, la inicialización de primavera da error.No hay UserTransaction JTA disponible: especifique 'userTransaction' o 'userTransactionName'

org.springframework.beans.factory.BeanCreationException: Error creating bean 
    with name 'transactionManager' defined in ServletContext resource 
    [/WEB-INF/applicationContext.xml]: Invocation of init method failed; 
nested exception is java.lang.IllegalStateException: No JTA UserTransaction 
    available - specify either 'userTransaction' or 'userTransactionName' or 
    'transactionManager' or 'transactionManagerName' 

¿Por qué la inicialización de Spring no es exitosa?

Gracias

+0

¿Qué configuración cambiaste en JBoss? – skaffman

+0

Modifiqué el archivo ear-deployer-jboss-beans.xml en el directorio "deployers" para establecer la propiedad "aislada" en true. – Chir

Respuesta

0

intento de añadir

@EnableTransactionManagement 

en una clase de configuración, donde se mantiene el bean de configuración

que trabajó para mí cuando tuve ese problema, tal vez usted va a necesitar otra plataforma específica implementación del administrador de transacciones, pero este es un buen lugar para comenzar.

@Bean 
public PlatformTransactionManager transactionManager() { 
    JpaTransactionManager txManager = new JpaTransactionManager(); 
    txManager.setEntityManagerFactory(entityManagerFactory()); 
    return txManager; 
} 
+0

Tengo un problema similar al implementar la aplicación sboot en IBM WAS. Comprobaré si esto funciona. – Espresso

Cuestiones relacionadas