Использование подстановки команд в tomcat.conf при работе в качестве службы?

У меня был установлен tomcat8 в инстансе AWS, созданном с использованием AMI Amazon Linux 1. Внутри tomcat.conf я добавил переменные, которые устанавливались с помощью подстановки команд $() для чтения параметров из хранилища параметров AWS с информацией об URL-адресе базы данных, имени и т. д. Это отлично сработало. Каждый раз, когда запускался tomcat, он запускал и анализировал команды и устанавливал переменные среды на основе текущих значений хранилища параметров. Затем это можно использовать в Spring bean для подключения к базе данных.

Недавно мне пришлось перейти на использование Amazon Linux 2 AMI. Я понял, как установить Tomcat (8.5), но теперь он работает как служба systemctl. Когда это запускается, он читает текст подстановки команды как есть, поэтому переменные среды в конечном итоге устанавливаются как «$ (.....)», что, очевидно, не работает.

Если я вручную запускаю /usr/libexec/tomcat/servers start, он выполняет замену, но когда я запускаю systemctl start tomcat.service, это не так.

Я пытался использовать jsvc, но это не имеет значения. Я могу распечатать одну из переменных в /usr/libexec/tomcat/preamble сразу после того, как она будет прочитана в tomcat.conf, и она не выполняет подстановку команд.

Кто-нибудь знает, почему это больше не работает? Есть ли способ установить переменные среды во время выполнения для tomcat так, как это работало раньше?


person Morac    schedule 26.03.2020    source источник


Ответы (1)


Поэтому я придумал способ сделать это. Если я помещу файл в папку /etc/tomcat/conf.d, он будет проанализирован. Я переместил туда все переменные, которые хотел установить, и добавил «экспорт» впереди, и это, похоже, помогло.

person Morac    schedule 27.03.2020