将基于Spring的maven项目从JBoss EAP 6迁移到tomcat 8.0

时间:2017-06-02 13:26:36

标签: spring tomcat jboss jta

Cannot resolve reference to bean 'transactionManager' while setting bean 
property 'transactionManager'; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'transactionManager' defined in ServletContext resource [/config/core-spring-config.xml]: Invocation of init method failed; nested
    java.lang.IllegalStateException: No JTA UserTransaction available - specify either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 'transactionManagerName'

我为设置做了什么?

我创建了jndi资源。最初dataSourceBean初始化错误即将到来,我通过创建jndi资源解决了这个问题。 application.properties也已正确映射,并且它正在加载相同的道具。现在出现上述错误。

假设:  1.相同的app.war在我的系统上的jboss实例上工作正常。我的tomcat也在同一个系统上。很少有像微服务这样的应用程序在同一个tomcat上运行良好但我的主应用程序却没有。 2.我试图从其中一个bean的init方法运行一个sql查询,所以sql connection / jdbctemplate也没关系。 我认为根本原因应该是一些默认的spring jar相关/路径表达式相关。

1 个答案:

答案 0 :(得分:0)

Tomcat只是一个servlet容器,与Jboss不同,它是一个完整的Java EE堆栈实现,是一个应用程序服务器。因此,如果您使用了JMS,JTA和So等Java EE功能,那么在从tomcat迁移到Jboss时可能需要进行更改。在这种情况下,您应该确定事务管理器,以便让Tomcat知道应该使用哪种事务管理器。