World Map
Java Service Wrapper ist der einfachste Weg, um Ihr Produkt verlässlicher zu machen.
  • Free Trial
  • Buy Now
Integrationsmethoden

Java Service Wrapper Integrationsmethoden

Zur Zeit gibt es vier verschiedene Integrationsmöglichkeiten für den Java Service Wrapper. Drei der Methoden können sofort eingesetzt werden, ohne dass ein zusätzlicher Programmieraufwand notwendig wäre.

In einem ersten Schritt gilt es, zu entscheiden, welche der folgenden vier Methoden für Ihre Anwendung am besten geeignet ist. Nach einem kurzen Überblick über jede der genannten Optionen folgt eine detaillierte Beschreibung, wie eine Anwendung unter Verwendung einer der Methoden zu integrieren ist.

Methode 1

Methode 1 verwendet die Hilfsklasse WrapperSimpleApp, um eine Anwendung zu starten. Dies ist bei weitem der einfachste Weg, diese mit dem Wrapper zu integrieren und wenn möglich auch die am meisten empfohlene Integrationsmethode.

Es gibt jedoch einige Punkte, die bei Anwendung dieser Methode, zu beachten sind (Hinweis: Java-Version). Es gibt keinen direkten Aufruf an eine Anwendung sich ordnungsgemäß zu beenden, wenn der Wrapper die JVM herunterfährt. Der Wrapper fährt die JVM durch den Aufruf (innerhalb der JVM) von System.exit() herunter. Hat eine Anwendung einen eigenen Shutdown-Hook registriert, so wird dieser aufgerufen und bietet somit der Anwendung eine Möglichkeit sich ordnungsgemäß zu beenden. Ist kein Shutdown-Hook registriert, so wird die Anwendung sofort beendet, gleichsam der Verwendung von STRG-C in einem Konsolen-Fenster. In beiden Fällen, mit oder ohne Shutdown-Hook, verhält sich die Anwendung gleich einer Ausführung ohne Wrapper.

Detaillierte Übersicht und Anweisungen am Beispiel der HelloWorld-Anwendung (Windows oder Linux / Unix).

Methode 2

Methode 2 verwendet die Hilfsklasse WrapperStartStopApp. Diese Methode bietet die Möglichkeit zur Integration mit Anwendungen (z.B. Tomcat), die mittels einer Klasse gestartet ("Start"-Klasse) und mittels einer anderen Klasse gestoppt ("Stop"-Klasse) werden.

Typischerweise öffnet diese Art von Anwendung beim Aufruf einen Server-Socket, der auf eine Verbindung wartet, die das Beenden auslöst. Durch Herstellung einer Verbindung zur Anwendung löst die "Stop"-Klasse schließlich das Beenden der Anwendung aus.

Der Wrapper startet Anwendungen dieser Art unter Verwendung einer "Start"-Klasse gleich wie in Methode 1 und ruft im Fall des Beendens der Anwendung die main-Methode der "Stop"-Klasse auf.

Detaillierte Übersicht und Anweisungen am Beispiel Tomcat (Windows oder Linux / Unix).

Methode 3

Methode 3 bietet Zugriff auf alle Wrapper-Funktionen und damit die größte Flexibilität. Es ist auch die einzige Methode die zusätzliche Programmierschritte benötigt, um eine vollständige Integration zu gewährleisten. Diese Methode beinhaltet die Erstellung einer Klasse, welche die Schnittstelle WrapperListener implementiert. Eine Instanz dieser Klasse wird danach instanziert und mit dem WrapperManager registriert.

Methode 3 bietet Funktionen, welche bei Anwendung der ersten beiden Methoden nicht verfügbar sind (sowohl WrapperSimpleApp als auch WrapperStartStopApp) und führt dem Programmcode einiges an Komplexität hinzu. Es ist jedoch die einzige Methode, die es von Benutzer erstelltem Code erlaubt, System-Control-Events zu empfangen und direkt darauf zu reagieren, sowie die Start-Up- und Shut-Down-Prozesse zu kontrollieren.

Sollten diese zusätzlichen Funktionen nicht benötigt werden, wird Methode 1 (WrapperSimpleApp) unter Verwendung eines Shutdown-Hooks, oder die Verwendung einer "Stop"-Klasse empfohlen. Die main-Methode einer solchen "Stop"-Klasse kann hierbei so einfach gehalten werden wie der Aufruf einer Methode zum Beenden innerhalb der Anwendung.

In den meisten Anwendungsfällen sind diese zusätzlichen Kontrollmöglichkeiten nicht nötig, da die Hilfsklassen von Methode 1 (WrapperSimpleApp) und Methode 2 (WrapperStartStopApp) die Aufgabe des Startens und Beendens der Anwendung zur passenden Zeit übernehmen.

Detaillierte Übersicht und Anweisungen (plattformunabhängig).

Methode 4

Die vierte und letzte Methode verwendet die Hilfsklasse WrapperJarApp, um eine Anwendung zu starten. Sie bietet eine einfache Möglichkeit, um eine Anwendung, die bereits als ausführbare JAR-Datei konfiguriert ist, mit dem Wrapper zu integrieren.

Es gibt jedoch einige Punkte, die bei Anwendung dieser Methode, zu beachten sind (Hinweis: Java-Version). Es gibt keinen direkten Aufruf an eine Anwendung, sich ordnungsgemäß zu beenden, wenn der Wrapper die JVM herunterfährt. Der Wrapper fährt die JVM durch den Aufruf (innerhalb der JVM) von System.exit() herunter. Hat eine Anwendung einen eigenen Shutdown-Hook registriert, so wird dieser aufgerufen und bietet somit der Anwendung eine Möglichkeit sich ordnungsgemäß zu beenden. Ist kein Shutdown-Hook registriert, so wird die Anwendung sofort beendet, gleichsam der Verwendung von STRG-C in einem Konsolen-Fenster. In beiden Fällen, mit oder ohne Shutdown-Hook, verhält sich die Anwendung gleich einer Ausführung ohne Wrapper.

Detaillierte Übersicht und Anweisungen anhand eines Beispiels: Hudson (Windows oder Linux / Unix).

NOTE

Für Benutzer der Java-Version 1.3.0 :

Shutdown-Hooks wurden mit Java-Version 1.3 eingeführt. Eine Anwendung wird mit Hilfe von Shutdown-Hooks unter Verwendung von Methode 1 (WrapperSimpleApp) oder Methode 4 (WrapperJarApp) ordnungsgemäß beendet.

Für Benutzer der Java-Version 1.2.x :

Der Wrapper kann mit Java-Versionen 1.2.x verwendet werden. Jedoch werden einige Funktionen deaktiviert, da diese Java-Versionen keine Unterstützung für Shutdown-Hooks bieten. Methode 1 (WrapperSimpleApp) und Methode 4 (WrapperJarApp) können mit Java-Versionen 1.2.x verwendet werden. Anwendung werden in diesem Fall jedoch nicht ordnungsgemäß beendet. Diese beiden Methoden sind auf den Shutdown-Hook einer Anwendung angewiesen, der alle nötigen Schritte ausführt, bevor die JVM beendet wird. Um ein ordnungsgemäßes Beenden der Anwendung zu garantieren muss entweder Methode 2 (WrapperStartStopApp) oder Methode 3 (WrapperListener) angewendet werden, da diese die direkte Codeausführung erlauben.