Доступно без использования 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 не увенчалась успехом?
Спасибо
Ответы
Ответ 1
попробуйте добавить
@EnableTransactionManagement
в классе конфигурации, где вы сохраняете конфигурацию bean
который работал на меня, когда у меня была эта проблема,
возможно, вам понадобится другая реализация конкретной транзакции менеджера транзакций, но это хорошее место для начала.
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}