2013-06-10 3 views
13

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

  1. Проект -> Запуск от -> Запустить конфигурацию. И вкладка «Среда».
  2. Добавить новую переменную среды с именем APP_MASTER_PASSWORD и ее значение.

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

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

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

Я общался с ней. Но я не получил никакого решения.

спасибо.

+0

Нет ли вариантов с помощью Tomcat vhost? Эти настройки среды непригодны, если у вас несколько копий приложения. Я считаю, что они называются «записями окружающей среды»? – Wouter

ответ

6

Окружающая среда Записи, указанные в Разделе <Environment>, являются JNDI, доступны с использованием InitialContext.lookup под кодом java:/comp/env. Вы можете указать свойства среды для JNDI, используя параметр среды для конструктора InitialContext и application resource files.

System.getEnv() относится к переменным среды системы самого процесса tomcat.

Чтобы установить переменное окружение с помощью Баша команды: export TOMCAT_OPTS=-Dmy.bar=foo и запустить Tomcat: ./startup.sh Чтобы получить значение системного свойства bar использования System.getProperty(). System.getEnv() может использоваться для извлечения переменной окружения, то есть TOMCAT_OPTS.

+0

Сегодня это CATALOINA_OPTS - но, кроме того, это то, что помогло мне сейчас! – Henning

20

Вы можете использовать setenv.bat или .sh для передачи переменных окружения в Tomcat.

Создайте файл CATALINA_BASE/bin/setenv.bat или .sh и поместите в него следующую строку, а затем запустите Tomcat.

В Windows:

set APP_MASTER_PASSWORD=foo

В Unix подобных системах:

export APP_MASTER_PASSWORD=foo

+0

Это относится к Ubuntu, я считаю. Например, для Red Hat вы можете редактировать CATALINA_HOME/tomcat7.conf – mmcrae

+0

Это немного поздно, но ... Согласно [документации Tomcat] (https://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt), создание setenv.sh должно работать на любой вкус Unix. Сценарий catalina.sh проверяет, существует ли setenv.sh, если это так, выполните его во время процесса запуска. –

+0

'catalina.sh' проверяет как' CATALINA_BASE/bin/setenv.sh', так и 'CATALINA_HOME/bin/setenv.sh' и выполняет их, если они есть. – rustyx

17

Вы должны использовать системное свойство вместо переменной среды для этого случая. Редактирование TOMCAT скрипты для JAVA_OPTS и добавить свойство, как:

-DAPP_MASTER_PASSWORD=foo

и в вашем коде, писать

System.getProperty("APP_MASTER_PASSWORD");

Вы можете сделать это в Eclipse, а вместо JAVA_OPTS, скопируйте line в параметрах VM внутри конфигураций запуска.

0

В случае Windows, если вы не можете найти setenv.bat, во 2-й линии catalina.bat (после @ECHO выключения) добавить следующее:
SET APP_MASTER_PASSWORD = Foo

не может быть лучший подход, но работает

1

Если вы начинаете свой Tomcat с Eclipse (представление «Servers»), вы должны иметь запись «Run/Run Configuration» (меню), называемая «Apache Tomcat/Tomcat ...». Когда вы выбираете эту запись в списке конфигураций запуска, вы получаете окно с несколькими вкладками, один из которых помечен как «Окружающая среда». Там вы можете настроить переменные среды для своего Tomcat. Обязательно перезапустите Tomcat.

Смежные вопросы