web-dev-qa-db-fra.com

TOMCAT_OPTS, variable d'environnement et System.getEnv ()

J'utilise Tomcat et je souhaite obtenir une variable d'environnement dans mon code Java.

Pour définir une variable d’environnement, j’utilise cette commande bash:

export Tomcat_OPTS=-Dmy.var=foo

Après je lance Tomcat

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

Dans mon code Java, j'essaie d'obtenir cette variable:

System.getEnv("my.var")

Mais il retourne NULL.

Comment puis je faire ça ?

Je précise que si j'utilise maven pour lancer Tomcat et utiliser l'onglet environnement Eclipse, la variable est trouvée! Mais je dois lancer Tomcat comme ci-dessus en mode production.

EDIT: lorsque vous utilisez export MY_VAR directement, il s’exécute en local mais pas sur mon serveur ...

15
Jerome Cance

J'ai enfin trouvé un fichier de configuration nommé Tomcat6.conf dans CATALINA_HOME. J'ajoute export my.var = foo à la fin du fichier et System.getenv ("my.var") renvoie maintenant la valeur ...

Cauchemar...

15
Jerome Cance

System.getEnv renvoie des variables d'environnement telles que PATH ou, dans votre exemple, Tomcat_OPTS). 

Lorsque vous appelez Java avec -Dfoo=bar, vous ne définissez pas de variable d'environnement: vous transmettez une propriété système. Utilisez System.getProperty pour obtenir la valeur de foo.

18
JB Nizet

si vous utilisez Tomcat 7 et Ubuntu OS, vous pouvez modifier le fichier/etc/default/Tomcat7, ajoutez simplement une ligne de votre voiture = votre valeur le fera.

comme ci-dessous:

# 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"
13
ice6

dans Tomcat8 installé en décompressant simplement l'archive, il existe un fichier appelé " catalina.properties "

Vous pouvez introduire des variables d’environnement dans ce fichier en ajoutant simplement

my.special.variable=some_value
4
Tobias Gassmann

Pour Tomcat7 + Ubuntu:

Ensemble:

  1. Ouvrir le fichier /etc/default/Tomcat7
  2. Ajouter la ligne somekey=value

    Remarque: le nom de la variable ne peut pas contenir de points.

  3. Redémarrez Tomcat: service Tomcat7 restart

Lis:

System.getenv("somekey");

3
Nikita Bosik

Il existe un fichier de configuration pour Tomcat, situé par défaut à /dev/Tomcat6/Tomcat6.conf Je crois (consultez /etc/init.d/Tomcat pour connaître la valeur de "Tomcat_CFG". Il s'agit de "source" . dans ce fichier (. $Tomcat_CFG) avant Tomcat est démarré (ou arrêté, redémarré, etc.), donc si vous ajoutez la ligne:

MY_VAR=somevalue

Cela devrait être disponible pour votre application Java.

Je sais que c'est une vieille question, mais peut-être que ce sera utile à quelqu'un d'autre :)

3
Svend Hansen

Si vous souhaitez définir la variable d'environnement dans Tomcat pour qu'elle entre par getEnv , utilisez setenv .

C'est à dire. dans Tomcat/bin vous avez (ou devez créer) setenv.sh (ou setenv.bat pour шindoшs) et définissez

my.var=FOO
OTHERVAR=BOO

en le préfixant avec set pour шindoшs.

1
Andrey Regentov

Maintenant que vous venez de m'expliquer que vous utilisez une installation basée sur yum (qui suggère un dérivé de la distribution Red Hat), si vous exécutez votre Tomcat en tant que démon, vous devez définir la commande "export Tomcat_OPTS = ...". dans votre/etc/profile (pour la portée globale), ou ajoutez-le dans votre fichier ~/.profile ou ~/.bashrc à la maison de l'utilisateur qui démarre l'instance de Tomcat.

0
Daniel Baktiar

Utilisez-vous Tomcat sur Eclipse IDE? Ensuite, il vous suffit de suivre ces étapes:

  1. Double-cliquez sur le serveur Tomcat
  2. Ouvrir la configuration de lancement
  3. Environnement
  4. Nouveau (Nom/Valeur)
0
bpedroso