Ответ 1
Наконец, я нашел файл конфигурации с именем tomcat6.conf в CATALINA_HOME. Я добавляю экспорт my.var = foo в конец файла, а System.getenv( "my.var" ) теперь возвращает значение...
Кошмар...
Я использую tomcat, и я хочу получить переменную окружения в своем java-коде.
Чтобы установить переменную окружения, я использую эту команду bash:
export TOMCAT_OPTS=-Dmy.var=foo
После этого я запускаю tomcat
./startup.sh (in bin folder of tomcat)
В моем java-коде я пытаюсь получить эту переменную:
System.getEnv("my.var")
Но он возвращает NULL.
Как я могу это сделать?
Я точно знаю, что если я использую maven для запуска tomcat и использования вкладки среды eclipse, переменная найдена! Но мне нужно запустить tomcat, как показано выше, в режиме производства.
EDIT: при использовании экспорта MY_VAR непосредственно он запускается локально, но не на моем сервере...
Наконец, я нашел файл конфигурации с именем tomcat6.conf в CATALINA_HOME. Я добавляю экспорт my.var = foo в конец файла, а System.getenv( "my.var" ) теперь возвращает значение...
Кошмар...
System.getEnv
возвращает переменные среды, такие как PATH или, в вашем примере, TOMCAT_OPTS).
При вызове Java с -Dfoo=bar
вы не устанавливаете переменную среды: вы передаете системное свойство. Используйте System.getProperty
, чтобы получить значение foo.
Если вы используете tomcat7 и unbuntu os, вы можете редактировать файл /etc/default/tomcat 7, просто добавьте строку 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"
Здесь есть файл конфигурации для tomcat, по умолчанию расположенный в /dev/tomcat6/tomcat6.conf
, я верю (посмотрите в /etc/init.d/tomcat, чтобы узнать, что такое значение "TOMCAT_CFG". Это "источник" .
в этот файл (. $TOMCAT_CFG
) перед запуском tomcat (или остановлен, перезапущен и т.д.), поэтому, если вы добавите строку:
MY_VAR=somevalue
Это должно быть доступно вашему java-приложению.
Я знаю, что это старый вопрос, но, возможно, он будет полезен кому-то еще:)
Set:
/etc/default/tomcat7
файлДобавить строку somekey=value
Примечание: имя переменной не может содержать точки.
service tomcat7 restart
Чтение:
System.getenv("somekey");
в Tomcat8, установленном при распаковке архива, есть файл под названием catalina.properties "
Вы можете ввести переменные среды в этом файле, просто добавив
my.special.variable=some_value
Теперь, когда вы объяснили мне, что вы используете установку на основе yum (которые предлагают дистрибутивы Red Hat), если вы используете Tomcat в качестве демона, вам нужно установить "export TOMCAT_OPTS =..." в вас /etc/profile (для глобальной области) или добавьте его в файл ~/.profile или ~/.bashrc у себя дома, который запускает экземпляр Tomcat.
Используете ли вы Tomcat на Eclipse IDE? Затем вам просто нужно выполнить следующие действия:
Если вы хотите установить переменную окружения в tomcat для прохождения через getEnv, используйте setenv.
т.е. в tomcat/bin у вас есть (или должен создать) setenv.sh
(или setenv.bat
для шиндош) и определить
my.var=FOO
OTHERVAR=BOO
добавив его set
для шиндош.