Назад | Перейти на главную страницу

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

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

/opt/tomcat/conf/catalina.properties

addint в конце:

my.special.variable=some_value

и читая это

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

Я получаю ноль

Заметка

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

Например :

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

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

Вы можете определять переменные в 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_valueto the command line used to start Tomcat. This is done in the same file. Insetenv.sh` вы бы добавили строку вроде:

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

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

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

    System.getProperty("my.special.variable");

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

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

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