没有可用的JTA UserTransaction - 指定'userTransaction'或'userTransactionName'中的任一项。

19
我遇到了一个关于Spring事务的奇怪问题。我的应用程序使用带有EJBs的Spring。EJBs也调用使用@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初始化不成功?

谢谢。


你在 JBoss 中改了哪个设置? - skaffman
我修改了“deployers”目录下的“ear-deployer-jboss-beans.xml”文件,将属性“isolated”设置为true。 - Chir
1个回答

1
尝试添加

标签


@EnableTransactionManagement

在一个配置类中,您持有配置bean。

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

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

我在IBM WAS部署sboot应用程序时遇到了类似的问题,将会检查这是否有效。 - Espresso
将几个医疗系统项目从 IBM WAS 迁移到了简单的 Spring Boot。RIP IBM WAS -- 甚至被 IBM 卖给了 HCL!哎呀。 - Espresso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接