19

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

Stu Thompson
  • 36,763
  • 19
  • 104
  • 155
Chir
  • 661
  • 1
  • 10
  • 27

1 Answers1

1

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;
}
NiNiCkNaMe
  • 136
  • 4
  • I'm having similar issue when deploying sboot app in IBM WAS, will check fi this works. – Espresso Feb 16 '18 at 23:54
  • Migrated couple of healthcare system projects away from IBMWAS to simple sboot. RIP to ibmwas -- ibm even sold it to HCL! Huh. – Espresso Sep 10 '20 at 18:07