Starten Ihrer Anwendung (Linux / UNIX)

Unter UNIX ist es möglich, eine Anwendung entweder als eine Desktopanwendung, oder als ein Daemon-Prozess im Hintergrund auszuführen. Im Fall eines Daemons muss der Wrapper imstande sein, installiert, entfernt, gestartet, angehalten, sein Status abgefragt zu werden etc. Abhängig davon, ob die Anwendung eine GUI besitzt oder darauf abgestimmt ist, in einem Befehlszeilenfenster zu laufen, wird danach auch bestimmt, wie die Anwendung ausgeführt wird.

Befehlsbasierte .BAT-Datei

Einrichten von Skripts

Der Wrapper wird mit einem Shellskript ausgeliefert (sh), welches für einen zuverlässigen Start und Beenden beliebiger Java-Anwendungen genutzt werden kann. Es wird vom Java Service Wrapper überwacht.

? Please check the English version for a more recent version of this text.

Zuerst kopieren Sie bitte das folgende Shellskript vom Wrapper-Verzeichnis in das bin-Verzeichnis Ihrer Anwendung.

Skriptdatei:
{WRAPPER_HOME}/src/bin/App.sh.in

Benennen Sie die Skriptdatei um, um Ihren Anwendungsnamen korrekt wiederzugeben. (Ersetzen Sie "MyApp" mit dem Namen Ihrer Anwendung in dem ganzen Dokument.)

Beispiel für das Ersetzen des Dateinamens:
/usr/lib/myapp/bin/myapp
? Please check the English version for a more recent version of this text.

Öffnen Sie nun das Skript in einem Editor. Wir müssen lange und kurze Namen festlegen, um wiederzugeben, dass das Skript genutzt wird, um Ihre Anwendung zu starten. Gleich nach dem Skriptheader sehen Sie zwei Variablen APP_NAME und APP_LONG_NAME. Vorgeschlagene Werte für diese Variablen werden unten angezeigt:

Beispieleinstellungen in der Skriptdatei:
APP_NAME="myapp"
APP_LONG_NAME="My Application"

Das Skript sollt nicht irgendwelche zusätzliche Änderungen erfordern. jedoch nimmt es an, dass die Ausführdatei des Wrappers sich im gleichen Verzeichnis befindet wie und die wrapper.conf- Datei sich innerhalb eines conf-VGerzeichnis befindet (eine Ebene höher, ../conf/wrapper.conf). Wenn Sie wünschen würden, dass sich jeder dieser Dateien woanders befinden, würde die WRAPPER_CONF-Variable im Skript passend angepasst werden müssen.

WARNING

Wichtig! Bevor Sie fortsetzen, stellen Sie bitte sicher, dass beide das Skript und die Wrapper-Programmdatei ihr Ausführen-Bit gesetzt haben.

NOTE

Das Shellskript (sh) wird versuchen, eine PID-Datei im /var/run-Verzeichnis zu erstellen. Wenn der User, der gewöhnlich den Wrapper startet, keine Berechtigung hat, in dieses Verzeichnis zu schreiben, dann resultiert dies in einen Fehler. Eine Alternative, die in den meisten Fällen funktioniert, ist die, die PID-Datei in das gleiche Verzeichnis zu schreiben, in welches sich die Wrapper-Programmdatei befindet. Um diese Änderung durchzuführen, editieren Sie das sh-Skript und ändern die folgende Zeile:

PIDDIR="/var/run"

zu:

PIDDIR="./"

Ausführen in einer Konsole

Starten der Anwendung:

Die Anwendung kann nun einfach durch einfaches Ausführen von bin/myapp console ausgeführt werden. Aufgrund der Art, wie das Wrapper-Skript sein aktuelles Vezeichnis festlegt, ist es nicht notwendig. dieses Skript von innerhalb des bin-Verzeichnis auszuführen.

Befehls- und Ausgabebeispiel:
/usr/lib/myapp/bin/myapp console
Ausführen meiner Anwendung...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.x.x)
jvm 1    |

Beim Ausführen via des Konsolenbefehls wird die Ausgabe der JVM in der Konsole sichtbar sein.

Beenden der Anwendung:

Die Anwendung kann durch Drücken von STRG-C in der Konsole (Befehlszeilenfenster) beendet werden. Dies bewirkt, dass der Wrapper die Anwendung korrekt beendet.

Standard-Daemonskripte:

Wie Sie sehen werden, wenn Sie einen Befehl auslassen, sind die Skripte, die mit dem Wrapper ausgeliefert werden, ziemlich standardisierte Daemon-Skripte. Sie akzeptieren console, start, stop, restart, status, und vdump-Befehle.

  • Die start,stop, und restart-Befehle sind für die meisten Daemon-Skripte bekannt und werden benutzt, um den Wrapper und seine Anwendung als einen Daemon-Prozess zu steuern.
  • Der Status-Befehl kann genutzt werden, um herauszufinden, ob der Wrapper aktuell ausgeführt wird oder nicht.
  • Der console-Befehl startet den Wrapper in der aktuellen Shell, ermöglicht es, dass die Anwendung zwangsweise mit Strg-C beendet werden kann.
  • Der letzte Befehl dump sendet ein "kill -3"-Signal an den Wrapper, was bewirkt, dass seine JVM einen vollständigen Thread-Dump erstellt.

Ausführen als ein Daemon-Prozess

Die Anwendung kann durch Ausführen des Skripts und Nutzung des start-Befehls als ein losgelöster, unabhängiger Daemon-Prozess laufen.

Befehl- und Ausgabe-Beispiel:
/usr/lib/myapp/bin/myapp start
Running My Application...

Wenn die Anwendung unter Nutzung des start-Befehls ausgeführt wird, wird die Ausgabe von der JVM nur durch das Einsehen der wrapper.log-Datei sichtbar sein, indem der Befehl tail -f wrapper.log genutzt wird.

Da die Anwendung als ein eigenständiger, unabhängiger Prozess läuft, kann diese nicht durch Nutzung von STRG-C beendet werden und läuft weiterhin, selbst wenn die Konsole geschlossen wurde.

Um die Anwendung zu beenden, führen Sie das Skript noch einmal aus, indem Sie den stop-Befehl nutzen.

Befehl- und Ausgabe-Beispiel:
/usr/lib/myapp/bin/myapp stop
Stopping TestWrapper Example Application...
Stopped TestWrapper Example Application.

Installationsstart der Anwendung bei Neustart

? Please check the English version for a more recent version of this text.

Eingeführt in der Wrapper-Version 3.4.0, bietet das Skript eine Möglichkeit an, den Wrapper einzubinden (und damit schlußendlich auch Ihre Anwendung). Das Skript erkennt automatisch Ihr Betriebssystem - auf Linux-Plattformen auch einige Distributionen - und leistet die notwendigen Schritte, um das Wrapper-Skript in den Initialisierungsprozess Ihres Betriebssystems zu installieren.

Ausgabe-Beispiel:
sudo bin/testwrapper install
[sudo] password for tanuki: 
Detected Ubuntu:
 Installing service testwrapper from current directory /home/tanuki/wrapper/bin
 Adding system startup for /etc/init.d/testwrapper ...
   /etc/rc0.d/K20testwrapper -> ../init.d/testwrapper
   /etc/rc1.d/K20testwrapper -> ../init.d/testwrapper
   /etc/rc6.d/K20testwrapper -> ../init.d/testwrapper
   /etc/rc2.d/S20testwrapper -> ../init.d/testwrapper
   /etc/rc3.d/S20testwrapper -> ../init.d/testwrapper
   /etc/rc4.d/S20testwrapper -> ../init.d/testwrapper
   /etc/rc5.d/S20testwrapper -> ../init.d/testwrapper
? Please check the English version for a more recent version of this text.

Da das Skript sich selbst in Ihr Betriebssystem installiert, ist es notwendig, die install (und uninstall) Option als ein Root-User auszuführen!

  • Für FreeBSD and MacOSX User liefert das Skript eine Standardkonfigurationsdatei, die regelt, wie launchd oder initd mit dem Skript während des Bootvorgangs umgehen.
  • Jedoch ist es möglich, diesen Schritt kundenspezifisch anzupassen, einfach indem man die Konfigurationsdatei in das bin-Verzeichnis speichert.
  • Für MacOSX muß der Dateiname dieser Datei {Dateiname Ihres Skripts}.plist sein.
  • Für FreeBSD, {Dateiname Ihres Skripts}.install. Zum Beispiel, wenn das Skript "testwrapper" genannt ist, es würde nach "testwrapper.plist" auf MacOSX bzw. "testwrapper.install" auf FreeBSD suchen.
  • Die Linux-Distributionen von Ubuntu und RedHat unterstützen auch die Nutzung von Upstart. Standardmäßig sind init.d/rc.d-Skripte immer noch in Benutzung. So um in den Modus "Upstart" zu wechseln, öffnen Sie bitte das Wrapper-Skript und setzen Sie die Variable USE_UPSTART auf einen Wert.
Beispiel für das Einrichten des Skripts:
# Flag für Nutzung von upstart während der Installation (eher als  init.d rc.d)
USE_UPSTART=true

Wenn Sie das Skript durch Übergabe der Parameter "install" aufrufen, wird es sich als ein Update-Dienst installieren. Standardmäßig erzeugt das Skript eine Upstart-Konfigurationsdatei im Verzeichnis /etc/init/. Jedoch ziemlich verschieden zu FreeBSD und MacOS können Sie auch Ihre eigene upstart-Konfigurationsdatei erstellen. Wenn das Skript eine Datei, genannt {Dateiname Ihres Skripts}.install im gleichen Verzeichnis, in dem sich das Skript befindet, findet, wird es bevorzugt, diese Datei als Upstart-Konfigurationsdatei zu benutzen.

Ausgabebeispiel:
sudo bin/testwrapper install
[sudo] password for tanuki: 
Detected Ubuntu:
Installing the TestWrapper Example Application daemon using upstart..
creating default upstart conf file..

Wenn Sie wünschen, den Wrapper von der Systeminitialisierung zu deinstallieren / entfernen, führen Sie bitte das Skript (als ein Root-User!) mit Übergabe des Action-Parameters "remove" aus. Dies beendet zuerst einmal die laufende Wrapper-Anwendung und löscht sich schließlich selbst von der Initialisierung.

Ausgabebeispiel
sudo bin/testwrapper remove
[sudo] password for tanuki: 
Stopping TestWrapper Example Application...
Stopped TestWrapper Example Application.
Detected Ubuntu:
 Removing service testwrapper from current directory /home/tanuki/wrapper/bin
 Removing any system startup links for /etc/init.d/testwrapper ...
   /etc/rc0.d/K20testwrapper
   /etc/rc1.d/K20testwrapper
   /etc/rc2.d/S20testwrapper
   /etc/rc3.d/S20testwrapper
   /etc/rc4.d/S20testwrapper
   /etc/rc5.d/S20testwrapper
   /etc/rc6.d/K20testwrapper

Die Installation von älteren Wrapper-Versionen (älter als Version 3.4.0) muss manuell durchgeführt werden. Wenn Ihre Plattform nicht mitangegeben wurde, lesen Sie bitte bezüglich den mitgelieferten Versionen durch und passen Sie diese, da wo notwendig ist, an. Posten Sie bitte, was Ihnen aufgefallen ist, zur Mailing-Liste wrapper-user@lists.sourceforge.net und wir wären glücklich, wenn wir diese im nächsten Release hinzufügen können.

Standalone-Programmdatei

Als eine Alternative zur Nuztzung der Skripte, die mit dem Java Service Wrapper ausgeliefert werden, können Sie wählen, den Wrapper direct zu starten.

Wrapper-Nutzung

Wenn die wrapper-Programmdatei ohne irgendeinen Parameter oder mit einem "-?" gestartet wird, wird die folgende Anwendungsausgabe angezeigt werden.

Ausgabebeispiel:
Java Service Wrapper Professional Edition 64-bit {version}
  Copyright (C) 1999-{year} Tanuki Software, Ltd. All Rights Reserved.
    https://wrapper.tanukisoftware.com

Anwendung:
  ./wrapper <Befehl> <Konfigurationsdatei> [Konfigurationsoptionen] [...]
  ./wrapper <Konfigurationsdatei> [Konfigurationseigenschaften] [...]
     (<Befehl> impliziert als '-c')
  ./wrapper <Befehl>
     (<Konfigurationsdatei> implizit als 'wrapper.conf')
  ./wrapper
     (<Befehl> implizit als '-c' und <Konfigurationsdatei> implizit als 'wrapper.conf')

wobei <Befehl> einer der folgenden sein kann:
  -c  --console als Konsolen-Anwendung ausführen
  -h  --hostid  gibt eine Liste aller Host-IDs aus, die zur Lizensierung dieses Hosts verwendet werden können.
  -v  --version gibt Versionsinformationen zum Wrapper aus.
  -?  --help    gibt diese Hilfe-Nachricht aus
  -- <args>    zeigt das Ende der Argumente, die dem Wrapper übergeben werden an.
                Alle Arguemente nach '--' werden an die Java Anwendung weitergegeben.

<configuration file> ist die zu verwendende wrapper.conf. Der Name muss absolut oder relativ
  zum Speicherort von ./wrapper sein

[Konfigurationsoptionen] sind Name-Wert-Eigenschaftspaare, welche Werte überschreiben
  in wrapper.conf. Zum Beispiel:
  wrapper.debug=true

  Bitte beachten Sie, dass jeder Verweis auf eine Datei absolut oder relativ zum Speicherort
  der Wrapper-Programmdatei sein muss.

Ausführen in einer Shell

? Please check the English version for a more recent version of this text.

Um den Wrapper in einer Shell auszuführen, würden Sie den -c-Befehl spezifizieren, gefolgt von der wrapper.conf-Datei. Der Speicherort der wrapper.conf_Datei kann ein absoluter oder relativer Speicherpfad sein. Wenn ein relativer Pfad genutzt wird, ist der Pfad stets relativ zum Speicherort der wrapper-Datei, nicht zum aktuellen Verzeichnis.

Befehlsbeispiel:
/usr/lib/myapp/bin/wrapper -c ../conf/wrapper.conf

Starten der Anwendung als einen Dämon-Prozess

Um die Anwendung als einen Dämon-Prozess zu starten (die Nutzung des Shellskripts wird empfohlen):

Befehlsbeispiel:
/usr/lib/myapp/bin/wrapper -c ../conf/wrapper.conf wrapper.daemonize=TRUE

Verweis: Starten Ihrer Anwendung mit dem Wrapper