Подтвердить что ты не робот

Пропустить аргумент VM в Apache Tomcat

У меня есть webProject с аргументом VM, называемым "-Dfolder"

Я использую этот аргумент в applicationContext следующим образом:

<value>file:${FNET_CORE_CONFIG}/conf/${folder}/jdbc.properties</value>

В Eclipse для тестирования я использую "Run Configuration" для установки значения следующим образом:

-Dfolder=Dev

Теперь я хочу протестировать мой webapp на Apache Tomcat, поэтому мне нужно установить/отправить папку VM Argument.

Как я это делаю?

Мне нужно использовать setenv.sh? Как?. Может кто-нибудь дать мне и пример?

Спасибо и извините за мой английский

4b9b3361

Ответ 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" />

Ответ 2

Перейдите в $CATALINA_HOME и отредактируйте файл setenv.sh, добавив параметры со значением. Если вы хотите массировать несколько параметров, отделите их, используя space

например.

cd /opt/tomcat/bin/ 
sudo nano setenv.sh 

отредактировать строку

CATALINA_OPTS="${CATALINA_OPTS}" 

to

CATALINA_OPTS="${CATALINA_OPTS} -Dparam=value -Dparam2=value2" 

restart tomcat:

service tomcat restart

теперь вы можете увидеть аргументы, переданные tomcat при запуске:

ps aux | grep tomcat

Ответ 3

Сделал работу в Windows, создав файл setenv.bat в том же каталоге, что и catalina.bat и startup.bat(как рекомендовано в catalina.bat) и вставьте содержимое .bat:

set CATALINA_OPTS="-DyourVariableName=yourValue"

Это все. Мне понравился этот способ, поскольку он выглядит довольно чистым.