Ответ 1
Я не знаю, какую версию Tomcat вы используете, но в Tomcat 7 в файле catalina.sh вы можете указать переменную CATALINA_OPTS, и эта переменная перейдет на jvm.
Но, возможно, настройка переменной окружения - не лучший способ достичь вашей цели. Возможно, лучшим будет создание отдельного файла "app.properties" и включение его в applicationContext следующим образом:
<context:property-placeholder location="classpath*:app.properties" />
И решение для catalina.sh
# CATALINA_OPTS (Optional) Java runtime options used when the "start",
# "run" or "debug" command is executed.
# Include here and not in JAVA_OPTS all options, that should
# only be used by Tomcat itself, not by the stop process,
# the version command etc.
# Examples are heap size, GC logging, JMX ports etc.
Пример:
CATALINA_OPTS = "- Dfolder = Dev"
EDIT:
для окон это должно быть что-то вроде set CATALINA_OPTS="-Dfolder=Dev"
EDIT:
В конфигурации Spring вы можете использовать системное свойство так же, как ${propertyname}, а также можете включать файл с определением свойства, с context:property-placeholder
, и все, определенные в этих свойствах файла, также становятся доступными в конфигурации.
Например, у вас есть свойства базового набора: config.properties и набор файлов с настройками соединения db (DEV.properties, UAT.properties, PROD.properties). Итак, как вы можете включить различные свойства для другой среды? Это можно сделать многими способами, например, установить свойства системы в catalina.bat
set CATALINA_OPTS="-Dbuild=DEV"
и в applicationConfig.xml
<context:property-placeholder location="classpath*:${build}.properties, classpath*:config.properties" />
Или вы можете создать другую конфигурацию сборки и включить в окончательную WAR только одни свойства (DEV, UAT, PROD) для каждой конфигурации сборки. В applicationConfig установите что-то вроде:
<context:property-placeholder location="classpath*:*.properties" />