HowTo : Comment exécuter plusieurs instances du Wrapper sous UNIX

Compatibilité :1.0.0
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community
Plateformes :Windows (Non pris en charge)Mac OSXLinuxAlpine LinuxFreeBSDSolarisIBM z/Linux

Le Wrapper a été conçu pour faciliter l'exécution de plusieurs instances sur le même système sans configuration particulière. Cela repose sur le fait que chaque application exécutée se trouve dans son propre répertoire et/ou possède son propre nom. Pour éviter toute confusion, il est préférable que chacune possède son propre nom, même lorsqu'elles s'exécutent dans des répertoires différents.

Une application typique en cours d'exécution, intégrée au Wrapper, aura la structure de répertoires suivante :

Structure de répertoires typique du Wrapper :
$APP_HOME/
  bin/
    wrapper
    myapp.sh
    myapp.pid
  lib/
    libwrapper.so
    wrapper.jar
    myapp-*.jar
  conf/
    wrapper.conf
  logs/
    wrapper.log

Dans cet exemple, le fichier myapp.sh est une copie du script shell fourni dans la distribution du Wrapper sous le nom $WRAPPER_HOME/src/bin/App.sh.in (dans les versions plus anciennes du Wrapper, ce fichier s'appelait « sh.script.in »). Ce script contient un bloc de variables, qui doivent être configurées pour l'application comme suit :

Sous-ensemble des variables de configuration du script :
# Application
APP_NAME="myapp"
APP_LONG_NAME="My Application"

# Wrapper
WRAPPER_CMD="./wrapper"
WRAPPER_CONF="../conf/wrapper.conf"

# Location of the pid file.
PIDDIR="."

# When installing on On Mac OSX platforms, the following domain will be used to
#  prefix the plist file name.
PLIST_DOMAIN=com.myco.myapp

Lorsque le script s'exécute, tous les chemins relatifs sont relatifs à l'emplacement du script shell. (Cependant, lorsque le Wrapper lui-même est lancé, il définit son répertoire de travail comme celui du binaire Wrapper.)

Lorsque le Wrapper est lancé, il écrit un fichier PID nommé "$PIDDIR/$APP_NAME.pid" (dans ce cas, myapp.pid). Ce fichier est ensuite utilisé par le script shell pour déterminer si le processus Wrapper est toujours en cours d'exécution. Le répertoire $PIDDIR se trouve par défaut dans le même répertoire que le script shell.

Selon la configuration du script shell, le Wrapper peut également utiliser un ou plusieurs des fichiers suivants, en suivant le même schéma de nommage :

  • "$PIDDIR/$APP_NAME.anchor",
  • "$PIDDIR/$APP_NAME.command",
  • "$PIDDIR/$APP_NAME.status",
  • "$PIDDIR/$APP_NAME.java.status",
  • "$PIDDIR/$APP_NAME.anchor"

Certaines plates-formes UNIX définissent également un répertoire de verrouillage, "/var/lock/subsys". Lorsque ce répertoire existe et est accessible en écriture, le Wrapper écrit également un fichier de verrouillage : "/var/lock/subsys/$APP_NAME". Ces plates-formes utilisent ce fichier de verrouillage pour indiquer quels services sont actuellement en cours d'exécution. En règle générale, il est donc recommandé de veiller à ne pas exécuter plus d'une application portant le même nom, même si elles se trouvent dans des répertoires différents. Dans le cas contraire, la dernière application démarrée écrasera le fichier de verrouillage, et la première à s'arrêter le supprimera. Cela n'affectera pas le script shell du Wrapper, mais pourrait poser des problèmes à d'autres logiciels de gestion.

Si vous souhaitez exécuter deux applications en utilisant le même binaire Wrapper physique, elles s'exécuteront toutes les deux dans le même répertoire de travail. Cela signifie que vous devrez vous assurer que les deux applications disposent de scripts shell différents, avec des noms d'application différents ($APP_NAME), et qu'elles utilisent également des fichiers wrapper.conf différents. Le contenu des fichiers de configuration doit également être vérifié afin de s'assurer que les deux applications ont leurs propres fichiers journaux, à l'aide de la propriété wrapper.logfile.

Il est également possible d'utiliser la propriété wrapper.working.dir dans chaque fichier de configuration pour contrôler l'emplacement d'exécution de chaque application. Si vous choisissez cette approche, veuillez lire attentivement la documentation de la propriété afin de gagner du temps.