没有可用的JTA UserTransaction - 指定'userTransaction'或'userTransactionName'

问题描述 投票:15回答:1

我在spring事务中遇到了一个奇怪的问题。我的应用程序使用Spring和EJB。 EJB还调用使用@Transaction注释的Spring服务类。我使用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的初始化不成功?

谢谢

java spring jboss5.x
1个回答
0
投票

尝试添加

@EnableTransactionManagement

在您保存配置bean的配置类上

当我遇到这个问题时,这对我有用,也许你需要其他特定于平台的事务管理器实现,但这是一个很好的起点。

@Bean
public PlatformTransactionManager transactionManager() {
    JpaTransactionManager txManager = new JpaTransactionManager();
    txManager.setEntityManagerFactory(entityManagerFactory());
    return txManager;
}
© www.soinside.com 2019 - 2024. All rights reserved.