Variables environment Tomcat
Cet article présente une façon simple de compléter les variables d'environnement de Tomcat
lors de son démarrage. En effet, certaines applications peuvent nécessiter de spécifier des variables d'environnement spécifiques, comme la variable JENKINS_HOME
pour une instance Jenkins.
Votre avis
Nobody voted on this yet
|
|
Analyse
Le démarrage de Tomcat
s'effectue par l'exécution du script /usr/share/tomcat8/bin//catalina.sh
. Celui-ci contient une référence à un script setenv.sh
qui permet donc de spécialiser l'instance en cours de démarrage.
# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
. "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
A noter pour une installation sous Ubuntu
, les variables CATALINA_BASE
et CATALINA_HOME
sont spécifiées lors du démarrage par le script /etc/init.d/tomcat8
# Directory where the Tomcat 8 binary distribution resides
CATALINA_HOME=/usr/share/$NAME
# Directory for per-instance configuration files and webapps
CATALINA_BASE=/var/lib/$NAME
Pour rappel, lors du démarrage de l'application, les instructions suivantes sont exécutées.
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
shift
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-classpath "\"$CLASSPATH\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/policy/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
else
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-classpath "\"$CLASSPATH\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
fi
Il est donc possible d'agir sur un ensemble de variables, JAVA_OPTS
ou CATALINA_OPTS
par exemple. Il est important de se référer aux commentaires en début de script, indiquant qu'il est préférable de modifier CATALINA_OPTS
si l'on souhaite spécifier une variable uniquement lors du démarrage.
# CATALINA_OPTS (Optional) Java runtime options used when the "start",
# "run" or "debug" command is executed.
# Include here and not in JAVA_OPTS all options, that should
# only be used by Tomcat itself, not by the stop process,
# the version command etc.
# Examples are heap size, GC logging, JMX ports etc.
La variable JAVA_OPTS
est utilisée quelque soit la commande exécutée.
# JAVA_OPTS (Optional) Java runtime options used when any command
# is executed.
# Include here and not in CATALINA_OPTS all options, that
# should be used by Tomcat and also by the stop process,
# the version command etc.
# Most options should go into CATALINA_OPTS.
Configuration
Dans le cadre de cette analyse, le script sentenv.sh
est placé au niveau de CATALINA_BASE
, car c'est dans cet emplacement que sont installé historiquement les applications, soit à l'emplacement /var/lib/tomcat8/bin/setenv.sh
.
La première modification mise en place permet d'augmenter la mémoire allouée.
#!/bin/sh
export CATALINA_OPTS="-Xms256m -Xmx512m"
Windows
L'explication ci dessus s'applique pour une instance déployée sous Linux
. Le principe reste le même pour une utilisation sous Windows
.
Analyse
Le démarrage de Tomcat s'effectue depuis le script bin/catalina.bat
qui contient une référence au script setenv.bat
.
rem Get standard environment variables
if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
call "%CATALINA_BASE%\bin\setenv.bat"
goto setenvDone
:checkSetenvHome
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
:setenvDone
Configuration
Dans le cadre de cette analyse, le script sentenv.bat
. La modification mise en place permet de spécifier la variable JAVA_HOME
, afin de spécifier la version de Java
utilisée sans modifier des variables globales d'environnement de Windows.
set JAVA_HOME=C:\Apps\Java\jdk1.8.0_144