-1

I am porting Spring( v.4.3.2) application from Tomcat7 to Tomcat9. I am running Tomcat as a service on Windows box. in my ApplicationContext.xml I have several Beans profiles defined and I also have bean definitions outside of profiles :

<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>

When I am starting Tomcat I am passing a JVM option :

-Dspring.profiles.active='UAT'

Tomcat 7 starts my application perfectly fine and I am able to run it. However with Tomcat 9 I am getting an error

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: 

Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/config/applicationContext.xml]: Cannot resolve reference to bean 'utilsDS' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'utilsDS' is defined

"applicationContext.xml" are identical on Tomcat 7 and 9 since I used the same WAR to deploy an application. I am not sure what I'm missing. It seems to me it's something in configuration of Tomcat9 that would resolve the reference. I am not sure what it is.

vs777
  • 564
  • 2
  • 11
  • 24

1 Answers1

0

I added context-param to an application "web.xml" and it works :

<context-param>
 <param-name>spring.profiles.active</param-name>
 <param-value>dev</param-value>
</context-param>

still not sure why passing JVM option :

-Dspring.profiles.active=dev

didn't work

vs777
  • 564
  • 2
  • 11
  • 24