Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No JTA UserTransaction available - specify either 'userTransaction' or 'userTransactionName'

I have encountered a strange problem with spring transaction. My application uses Spring with EJBs. The EJBs also invoke Spring service classes annotated with @Transaction. I have used Spring JtaTransactionManager for transaction management. The application is packaged as an EAR file and is deployed on jboss5.0 and it works fine. But when I instruct jboss to use separate classloader for each EAR application, spring initialization gives error.

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'

Why initialization of Spring is not successful?

Thanks

like image 555
Chir Avatar asked Sep 28 '10 09:09

Chir


1 Answers

try adding

@EnableTransactionManagement

on a configuration class where you hold your config bean

that worked for me when i had that issue , maybe you will need other platform specific implementation of the transaction manager , but this is a good place to start.

@Bean
public PlatformTransactionManager transactionManager() {
    JpaTransactionManager txManager = new JpaTransactionManager();
    txManager.setEntityManagerFactory(entityManagerFactory());
    return txManager;
}
like image 163
NiNiCkNaMe Avatar answered Oct 16 '22 08:10

NiNiCkNaMe