tomcat 8 catalina.properties добавить переменную

Мне нужно прочитать переменную среды из Приложение Tomcat. Я пытался сделать:

/opt/tomcat/conf/catalina.properties

addint в конце:

my.special.variable=some_value

и прочитав его с помощью

System.getenv("my.special.variable")

, я получаю null

Примечание

У меня есть несколько определенных на уровне ОС (linux ubuntu), но результатом их получения является корневой каталог tomcat - /opt/tomcat.[12168estiveFor пример:

с printenv Я вижу переменную HOME (также с echo $ HOME). Выполнение кода из программы, которая находится за пределами tomcat - результат правильный - /home/user.

Точно такой же код в приложении, развернутом в возвращении tomcat - /opt/tomcat.

1
задан 6 March 2017 в 09:17
2 ответа

Вы можете определить переменные в setenv.sh(Linux/UNIX) или setenv.bat (Windows). Определите переменные таким образом, чтобы они соответствовали выполняемому О/С. Для Linux/UNIX необходимо экспортировать переменные. Вы также можете определить их в среде, в которой запускаете Tomcat.

Вы также можете создать appenv.sh или appenv.bat файл для изменений приложения (локальных). Для получения более подробной информации прочтите существующий файл setenv.sh или setenv.bat.

Периоды и дефисы недействительны для переменных окружения. Традиционно имена трансформируются с помощью верхней оболочки имени и смены периодов и дефисов на подчеркивания. Это дает имя MY_SPECIAL_VARIABLE. Это будет определено строкой типа:

export MY_SPECIAL_VARIABLE=some.value

Вы также можете определить свойства Java-системы, добавив строку '-Dmy.special.variable=some_valueв командную строку, используемую для запуска Tomcat. Это делается в том же файле. Вsetenv.sh` Вы можете добавить строку типа:

export JAVA_OPTS="$JAVA_OPTS -Dmy.special.variable=some_value"

Вы также можете использовать этот файл для настройки конфигурации Java. Если системная переменная JAVA_OPTS определена в среде, используемой для запуска Tomcat, то ее значение будет добавлено в командную строку.

Если вы используете свойство Java-системы, то вы получите его с помощью вызова System.getProperty. Это будет закодировано следующим образом:

    System.getProperty("my.special.variable");
4
ответ дан 3 December 2019 в 17:35

Переменные окружения не являются свойствами Tomcat.

AFAIK вы не можете использовать свойства внутри реального кода, только, например, в server.xml.

Если вы хотите использовать переменные окружения, которые вы можете получить с помощью System.getenv, вам нужно определить их с вашей операционной системой; это зависит от того, что вы делаете. Классический пример Linux можно найти в /etc/default/tomcat или в службе systemd.

.
0
ответ дан 3 December 2019 в 17:35

Теги

Похожие вопросы