Подтвердить что ты не робот

Доступно без использования JTA UserTransaction - укажите либо "userTransaction", либо "userTransactionName",

У меня возникла странная проблема с транзакцией spring. В моем приложении используется spring с EJB. EJB также ссылаются на классы обслуживания spring, аннотированные с помощью @Transaction. Я использовал spring JtaTransactionManager для управления транзакциями. Приложение упаковано в виде файла EAR и развернуто на jboss5.0, и оно отлично работает. Но когда я инструктирую jboss использовать отдельный загрузчик классов для каждого приложения EAR, инициализация spring дает ошибку.

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'

Почему инициализация spring не увенчалась успехом?

Спасибо

4b9b3361

Ответ 1

попробуйте добавить

@EnableTransactionManagement

в классе конфигурации, где вы сохраняете конфигурацию bean

который работал на меня, когда у меня была эта проблема, возможно, вам понадобится другая реализация конкретной транзакции менеджера транзакций, но это хорошее место для начала.

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