我正在将spring(v.4.3.2)应用程序从tomcat7移植到tomcat9。我正在windows box上运行tomcat作为服务。在applicationcontext.xml中,我定义了几个bean配置文件,并且在配置文件之外还有bean定义:
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="utilsDS" />
</bean>
.............
....
<bean id="utilsDS" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
</bean>
....
</beans>
启动tomcat时,我传递了一个jvm选项:
-dspring.profiles.active='uat'
Tomcat7可以很好地启动我的应用程序,我能够运行它。然而,对于Tomcat9,我得到了一个错误
org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.BeanCreationException:
创建在servletcontext资源[/web inf/config/applicationcontext.xml]中定义的名为“transactionmanager”的bean时出错:设置bean属性“datasource”时无法解析对bean“utilsds”的引用;嵌套异常为org.springframework.beans.factory.nosuchbeandefinitionexception:未定义名为“utilsds”的bean
Tomcat7和9上的“applicationcontext.xml”是相同的,因为我使用了相同的war来部署应用程序。我不确定我错过了什么。在我看来,tomcat9的配置中有一些东西可以解决引用问题。我不知道是什么。
1条答案
按热度按时间wvt8vs2t1#
我将context param添加到应用程序“web.xml”中,它可以工作:
仍然不确定为什么要传递jvm选项:
-dspring.profiles.active=dev
没用