TOMCAT_OPTS, переменная окружения и System.getEnv () - PullRequest
15 голосов
/ 25 февраля 2011

Я использую tomcat и хочу получить переменную окружения в своем коде Java.

Чтобы установить переменную окружения, я использую эту команду bash:

export TOMCAT_OPTS=-Dmy.var=foo

После этого я начинаю кот

./startup.sh (in bin folder of tomcat)

В своем Java-коде я пытаюсь получить эту переменную:

System.getEnv("my.var")

Но возвращается NULL.

Как я могу это сделать?

Я уточнил, что если я использую maven для запуска tomcat и использую вкладку среды eclipse, переменная найдена! Но мне нужно запустить Tomcat, как указано выше, в рабочем режиме.

РЕДАКТИРОВАТЬ: при использовании экспорта MY_VAR напрямую он запускается на локальном, но не на моем сервере ...

Ответы [ 9 ]

18 голосов
/ 25 февраля 2011

System.getEnv возвращает переменные окружения, такие как PATH или, в вашем примере, TOMCAT_OPTS).

Когда вы вызываете Java с -Dfoo=bar, вы не устанавливаете переменную окружения: вы передаете системное свойство.Используйте System.getProperty, чтобы получить значение foo.

15 голосов
/ 25 февраля 2011

Я наконец нашел файл конфигурации с именем tomcat6.conf в CATALINA_HOME. Я добавляю export my.var = foo в конец файла, и System.getenv ("my.var") теперь возвращает значение ...

Кошмар ...

13 голосов
/ 17 июля 2013

если вы используете tomcat7 и unbuntu os, вы можете отредактировать файл / etc / default / tomcat7, просто добавьте строку yourvar = yourvalue сделает это.

как показано ниже:

# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
# default of tomcat7.
TOMCAT7_USER=tomcat7

# Run Tomcat as this group ID. Not setting this or leaving it blank will use
# the default of tomcat7.
TOMCAT7_GROUP=tomcat7

IM4JAVA_TOOLPATH=/usr/local/bin/

# The home directory of the Java development kit (JDK). You need at least
# JDK version 1.5. If JAVA_HOME is not set, some common directories for
# OpenJDK, the Sun JDK, and various J2SE 1.5 versions are tried.
#JAVA_HOME=/usr/lib/jvm/openjdk-6-jdk

# You may pass JVM startup parameters to Java here. If unset, the default
# options will be: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC
# 
# Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector (improved
# response time). If you use that option and you run Tomcat on a machine with
# exactly one CPU chip that contains one or two cores, you should also add
# the "-XX:+CMSIncrementalMode" option.
JAVA_OPTS="-Djava.awt.headless=true -Xmx2048m -XX:+UseConcMarkSweepGC"
4 голосов
/ 14 ноября 2015

in Tomcat8 , установленный путем простой распаковки архива, есть файл с именем " catalina.properties "

Вы можете ввести переменные среды в этом файле, простодобавление

my.special.variable=some_value
3 голосов
/ 03 апреля 2015

Для Tomcat7 + Ubuntu:

Набор:

  1. Открыть /etc/default/tomcat7 файл
  2. Добавить строку somekey=value

    Примечание: имя переменной не может содержать точек.

  3. Перезапустить Tomcat: service tomcat7 restart

Читать:

System.getenv("somekey");

3 голосов
/ 20 марта 2012

Существует файл конфигурации для tomcat, по умолчанию расположенный в /dev/tomcat6/tomcat6.conf Я полагаю (посмотрите в /etc/init.d/tomcat, чтобы узнать, каково значение "TOMCAT_CFG". Это "источник" . вэтот файл (. $TOMCAT_CFG) до запуска tomcat (или остановки, перезапуска и т. д.), поэтому, если вы добавите строку:

MY_VAR=somevalue

Это должно быть доступно вашему java-приложению.

Я знаю, что это старый вопрос, но, возможно, он будет полезен кому-то еще:)

1 голос
/ 06 апреля 2015

Если вы хотите установить переменную окружения в tomcat для входа через getEnv , используйте setenv .

Т.е. в имеющемся tomcat / bin (или вы должны создать) setenv.sh (или setenv.bat для шиндош) и определите

my.var=FOO
OTHERVAR=BOO

, добавив set для шиндош.

0 голосов
/ 14 июля 2014

Используете ли вы Tomcat в Eclipse IDE? Тогда вам просто нужно выполнить следующие шаги:

  1. Двойной щелчок на сервере tomcat
  2. Открыть конфигурацию запуска
  3. Окружающая среда
  4. Новый (Имя / Значение)
0 голосов
/ 25 февраля 2011

Теперь, когда вы объяснили мне, что вы используете установку на основе yum (которая предлагает дистрибутивы дистрибутивов Red Hat), если вы запускаете Tomcat в качестве демона, вам нужно установить свой "export TOMCAT_OPTS = ... "в вашем файле / etc / profile (для глобальной области видимости) или добавьте его в файл ~ / .profile или ~ / .bashrc в доме пользователя, который запускает экземпляр Tomcat.

...