2016-11-21 88 views
0

我创建了要在我的Web应用程序中处于活动状态的配置文件的环境变量条目: Tomcat服务器中的setenv.bat文件 JAVA_OPTS =%JAVA_OPTS%-Dspring.profiles.active = prod配置文件未从tomcat中设置的环境变量中提取,但在web.xml中提到时选择配置文件

当我的应用程序尝试使用活动配置文件加载数据源时,由于没有设置活动配置文件,它会给出例外。

项中的applicationContext.xml:

<beans profile="dev"> 
    <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> 
     <property name="url" value="jdbc:oracle:thin:@localhost:1521:books"></property> 
     <property name="username" value="system"></property> 
     <property name="password" value="xyz"></property> 
    </bean> 
    </beans> 

    <beans profile="prod"> 
    <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> 
     <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property> 
     <property name="username" value="system"></property> 
     <property name="password" value="abc"></property> 
    </bean> 
    </beans> 

</beans> 

但是当我通过web.xml中的条目做同样的事情它的工作原理:

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

谁能告诉我什么是负载问题使用环境变量的简档。

回答

0

因为该命令行选项为Tomcat本身定义了一个系统属性,该属性不会由运行的Web上下文自动获取。

东西like this可能会工作:

<context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>${spring.profiles.active}</param-value> 
</context-param> 

,或者取决于你想使你的部署什么样的变化,你可能想看看Spring引导,从而简化了配置和启动一个春天应用。

+0

问题是我想在服务器本身设置一个变量,以便我可以知道它是否是开发环境或产品,并基于该配置文件被加载。我曾尝试在tomact的setenv中设置一个变量,但我的应用程序没有从那里获取任何系统属性或环境变量。 –

+0

好的,我建议应该解决这个问题。你试过了吗? – OrangeDog

+0

是的,但即使在tomcat的setenv文件中添加'spring.profiles.active',它也无法工作。请注意,我只想从服务器配置中读取它。 –