2016-11-21 7 views
0

Ich habe eine Umgebungsvariable Eintrag Profil in meiner Webanwendung erstellt werden: In setenv.bat Datei in Tomcat-Server JAVA_OPTS =% JAVA_OPTS% -Deinspring.profiles.active = prodProfil wird nicht aus Umgebungsvariable in tomcat ausgewählt, aber wird ausgewählt, wenn in web.xml

Und wenn meine Anwendung versucht, Datenquelle mit aktiven Profil zu laden, gibt es Ausnahme, da kein aktives Profil festgelegt ist.

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

Allerdings, wenn ich die gleiche Sache über web.xml Eintrag tun es funktioniert:

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

Kann jemand bitte sagen Sie mir, was das Problem beim Laden ist Profil mit Umgebungsvariablen.

Antwort

0

Da diese Befehlszeilenoption eine Systemeigenschaft für Tomcat selbst definiert, die nicht automatisch von den Webkontexten erfasst wird, in denen sie ausgeführt wird.

Etwas like this würde wahrscheinlich funktionieren:

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

Oder, je nachdem, welche Art von Änderung möchten Sie Ihre Einsätze machen, könnten Sie bei Spring Stiefel, suchen möchten, die eine einzige Feder vereinfacht die Konfiguration und den Start Anwendung.

+0

Problem ist, dass ich eine Variable in Server selbst festlegen möchte, so dass ich erfahren kann, ob es eine Entwicklungsumgebung oder prod ist und auf der Grundlage dieses Profils geladen wird. Ich habe versucht, eine Variable in setenv von tomact zu setzen, aber meine Anwendung nimmt keine Systemeigenschaft oder Umgebungsvariable von dort auf. –

+0

OK, und was ich vorgeschlagen habe, sollte dieses Problem lösen. Hast Du es versucht? – OrangeDog

+0

Ja, aber auch nach dem Hinzufügen von 'spring.profiles.active' in der setenv-Datei von tomcat hat es nicht funktioniert.Bitte beachten Sie, dass ich es nur aus der Serverkonfiguration lesen möchte. –

Verwandte Themen