Praxis-Tipp: Wie mehrfache Wrapper-Instanzen unter UNIX gestartet werden können

Kompatibel :1.0.0
Editionen :Professional EditionStandard EditionCommunity Edition
Betriebssysteme :Windows (Not Supported)Mac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

Der Wrapper wurde konzipiert, um es zu vereinfachen, mehrfache Instanzen auf dem gleichen System, ohne irgendeine besondere Konfiguration, auszuführen. Dies vertraut darauf, dass die einzelnen Anwendungen jede in ihrem eigenen Verzeichnis ausgeführt werden bzw. ihre eigenen Namen besitzen. Um Verwechslung zu vermeiden, ist es am besten, dass alle Anwendungen ihren eigenen Namen haben, selbst dann wenn sie in unterschiedlichen Verzeichnissen ausgeführt werden..

Eine typische mit dem Wrapper integrierte auszuführende Anwendung wird die folgende Verzeichnisstruktur haben:

Typische Wrapper-Verzeichnisstruktur:
$APP_HOME/
  bin/
    wrapper
    myapp.sh
    myapp.pid
  lib/
    libwrapper.so
    wrapper.jar
    myapp-*.jar
  conf/
    wrapper.conf
  logs/
    wrapper.log

In diesem Beispiel ist myapp.sh eine Kopie des Shell-Skripts, welches mit der Wrapper-Distribution als $WRAPPER_HOME/src/bin/App.sh.in ausgeliefert wird. Dieses Skript enthält eine Reihe von Variablen, die für die Anwendung wie folgt eingerichtet werden sollten:

Auswahl von Konfigurationsvariablen des Skripts:
# 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

Wenn das Skript läuft, werden all relative Pfadangaben relativ zum Speicherort des Shellskripts sein. (Wenn der Wrapper selbst gestartet wird, entspricht sein Arbeitsverzeichnis dem Pfad, in dem sich die Wrapper-Programmdatei befindet.)

Wenn der Wrapper gestartet wird, gibt er eine PID-Datei namens "$PIDDIR/$APP_NAME.pid" aus (in diesem Fall myapp.pid). Diese Datei wird später vom Shell-Skript genutzt, mitzuteilen, ob der Wrapper-Prozess noch läuft. $PIDDIR befindet sich standardmäßig im gleichen Verzeichnis wie das Shell-Skript.

Abhängig davon, wie das Shell-Skript konfiguriert ist, kann es sein, dass der Wrapper auch von einer oder mehreren der folgenden Dateien Gebrauch macht, indem er das gleiche Namensmuster benutzt:

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

Einige UNIX-Plattformen legen auch ein Sicherungsverzeichnis fest, "/var/lock/subsys". Wenn dieses Verzeichnis existiert und editierbar ist, wird der Wrapper auch eine Sicherheitsdatei ausgeben: "/var/lock/subsys/$APP_NAME". Solche Plattformen nutzen diese Sicherheitsdatei, um darüber zu informieren, welche Dienste aktuell laufen. Daher ist es in der Regel eine gute Idee, sicherzustellen, dass gleichzeitig nicht mehr als eine Datei mit dem gleichen Namen ausgeführt wird; das gilt auch, wenn diese in unterschiedlichen Verzeichnissen befänden. Wenn dies in Ihrem Fall so wäre, dann würde die Letztgestartete die Lock-Datei überschreiben, und die Zuerstbeendete würde sie löschen. Das wird nicht das Shell-Skript des Wrappers beeinflussen, könnte aber Probleme mit anderer Managementsoftware verursachen.

Wenn Sie zwei Anwendungen laufen lassen möchten, welche die gleiche physikalische Wrapper-Programmdatei nutzen würden, würden beide Dateien im gleichen Arbeitsverzeichnis laufen. Dies bedeutet, dass Sie sicherstellen müssen, dass die beiden Anwendungen verschiedene Shell-Skripte benutzen, mit unterschiedlichen Anwendungsnamen($APP_NAME), und auch, dass sie verschiedene wrapper.conf-Dateien benutzen. Die Inhalte der Konfigurationsdateien müssen auch überprüft werden, um sicherzustellen, dass die zwei Anwendungen ihre eigenen Logdateien haben, unter Nutzung der wrapper.logfile-Eigenschaft.

Es ist auch möglich, von der wrapper.working.dir-Eigenschaft in jeder Konfigurationsdatei Gebrauch zu machen, um zu regeln in welchem Bereich die Anwendung abläuft. Wenn Sie das zu tun, zu beabsichtigen, stellen Sie bitte sicher, dass Sie die Eigenschaftsdokumentation vollständig lesen, damit Sie sich so selbst Zeit sparen können.