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

Передайте пользовательскую переменную среды в tomcat

Я использую eclipse для кодирования веб-приложений. Внутри этого я передал переменную среды, как:

  • Project → Run as → Run Configuration. И вкладка "Экология".
  • Добавить новую переменную среды с именем APP_MASTER_PASSWORD и ее значением.

Я могу получить это значение в java-коде как System.getenv("APP_MASTER_PASSWORD").

Но теперь я хочу передать эту переменную окружения в tomcat и получить доступ к ней в приложении вместо передачи через eclipse.

Итак, как я могу передать такую ​​переменную tomcat?

Я обдумал это. Но я не получил никакого решения.

Спасибо.

4b9b3361

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