2016-11-21 27 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',它也無法工作。請注意,我只想從服務器配置中讀取它。 –

相關問題