Передайте пользовательскую переменную среды в tomcat
Я использую eclipse для кодирования веб-приложений. Внутри этого я передал переменную среды, как:
- Project → Run as → Run Configuration. И вкладка "Экология".
- Добавить новую переменную среды с именем
APP_MASTER_PASSWORD
и ее значением.
Я могу получить это значение в java-коде как System.getenv("APP_MASTER_PASSWORD")
.
Но теперь я хочу передать эту переменную окружения в tomcat и получить доступ к ней в приложении вместо передачи через eclipse.
Итак, как я могу передать такую переменную tomcat?
Я обдумал это. Но я не получил никакого решения.
Спасибо.
Ответы
Ответ 1
Вы можете использовать setenv.bat или .sh для передачи переменных среды в Tomcat.
Создайте файл CATALINA_BASE/bin/setenv.bat или .sh и поместите в него следующую строку, а затем запустите Tomcat.
В Windows:
set APP_MASTER_PASSWORD=foo
В системах Unix:
export APP_MASTER_PASSWORD=foo
Ответ 2
Для этого случая вы должны использовать свойство System вместо переменной окружения. Измените свои сценарии tomcat для JAVA_OPTS и добавьте свойство вроде:
-DAPP_MASTER_PASSWORD=foo
и в вашем коде напишите
System.getProperty("APP_MASTER_PASSWORD");
Вы также можете сделать это в Eclipse, вместо JAVA_OPTS, скопируйте строку в параметрах VM внутри конфигураций запуска.
Ответ 3
Записи окружения, указанные разметкой <Environment>
, являются JNDI, доступными с помощью InitialContext.lookup в разделе java:/comp/env
. Вы можете указать свойства среды JNDI с помощью параметра среды в конструкторе InitialContext и файлы ресурсов приложения.
System.getEnv()
относится к переменным системной среды самого процесса tomcat.
Чтобы установить переменную среды с помощью команды bash:
export TOMCAT_OPTS=-Dmy.bar=foo
и запустите Tomcat:
./startup.sh
Чтобы получить значение свойства System bar
, используйте System.getProperty()
. System.getEnv()
может использоваться для извлечения переменной окружения, т.е. TOMCAT_OPTS
.
Ответ 4
В случае Windows, если вы не можете найти setenv.bat, во второй строке catalina.bat(после @echo off) добавьте это:
SET APP_MASTER_PASSWORD = foo
Не лучший подход, но работает
Ответ 5
Если вы запускаете Tomcat из Eclipse (представление "Servers" ), вы должны иметь запись "Run/Run Configuration" (меню), называемая "Apache Tomcat/Tomcat...". Когда вы выбираете эту запись в списке конфигураций запуска, вы получаете окно с несколькими вкладками, один из которых помечен как "Окружающая среда". Там вы можете настроить переменные среды для своего Tomcat. После этого обязательно перезапустите Tomcat.
Ответ 6
Переменные среды могут быть установлены путем создания setenv.bat
(windows) или setenv.sh
(unix) в папке bin
вашего установочного каталога tomcat. Однако переменные окружения не будут доступны из вашего кода.
Системные свойства задаются -D
аргументами процесса Java. Вы можете определить начальные аргументы Java в переменной окружения JAVA_OPTS
.
Мои предложения - это сочетание этих двух механизмов. В вашем apache-tomcat-0.0.0\bin\setenv.bat
напишите:
set JAVA_OPTS=-DAPP_MASTER_PASSWORD=password1
и в вашем коде Java напишите:
System.getProperty("APP_MASTER_PASSWORD")
Ответ 7
Для систем Unix и Mac: перейдите в /bin/setenv.sh в папке tomcat
Добавьте строку ниже
export JAVA_OPTS="$JAVA_OPTS -DAPP_MASTER_PASSWORD=mypass"
Теперь System.getProperty("APP_MASTER_PASSWORD")
вернет "mypass"