(Java) Windows Service Wrapper

Um ein (Java) Programm als Windows Service zur Verfügung zu stellen und somit automatisiert zu starten gibt es mehrere Möglichkeiten. Zu nennen ist hier vor allem der relativ weit verbreitete, jedoch kommerzielle Java Servie Wrapper von Tanuki Software (Tanuki Wrapper). Es gibt auch noch den YAJSW (Yet Another Java Service Wrapper) und den JSL (Java Service Launcher).
Alternativen, welche nicht nur Java Programme als Systemdienst unter Windows zur Verfügung stellen können sind der Non-Sucking Service Manager (NSSM) oder aber Bordmittel von Windows.

Ein kleiner Vergleich.

Tanuki Wrapper

Den Tanuki Wrapper gibt es auch in einer Community Version, diese ist jedoch für Windows nicht in 64 Bit verfügbar. Hierfür muss zu einer kommerziellen Variante gegriffen werden. Nichtsdestotrotz ist der Wrapper eine gute Wahl, um einen Service für verschiedene Betriebssysteme zu erstellen. Es gibt Distributionen für AIX, FreeBSD, HPUX, Linux, MacOS X, Solaris, Windows, z/Linux und z/OS.

JSL

JSL ist “Public Domain” – ohne “richtige” Lizenz. Nachteil: der Wrapper bietet nur die Möglichkeit aus Java Programmen Windows Services zu erstellen. Dies aber sowohl für 32bit, als auch 64bit Java Programme.

YAJSW

YAJSW steht unter der GNU Lesser General Public License (LGPL) und sieht sich als Alternative zum Tanuki Java Service Wrapper. Die Konfigurationen sollten auch einfach portierbar sein. Er wird auch noch aktiv entwickelt und ist ebenso für viele Plattformen zu verwenden, sowie auch für ein 64bit Windows.

svrany.exe / sc.exe / Windows Server 2003 Ressource Kit

Mit Hilfe der svrany.exe aus den Microsoft Windows 2003 Server Ressource Kit Tools kann ebenfalls ein Service erstellt werden. Das funktioniert wohl auch noch auf Windows 2008 (R2) Systemen. Da die svrany.exe jedoch dafür nicht mehr vorgesehen ist, ist es meiner Meinung nach nicht der beste Weg – wenn man in die Zukunft Denkt.

Microsoft PowerShell

Für Executables gibt es mit der PowerShell auch die Möglichkeit einen Windows Service zu erstellen, durch das cmdlet “New-Service”.

Windows Task Scheduler

Eine weitere Variante wäre die Verwendung des Windows Task Schedulers. Mit dessen Hilfe lassen sich auch Batch (.bat oder .cmd oder .ps1) Skripte als Service im (Windows-)System anlegen. Hierzu kann man den schedule auf “ONSTART” setzen. Der Web ist nicht ganz der eleganteste, lässt sich mit der Hilfe von VB und C# auch wieder skripten. Ebenfalls lässt sich ein Task in XML exportieren und ist somit auch auf andere Systeme übertragbar. Der Weg über die Schtasks.exe ist leider für Serversysteme nicht benutzbar, da hier (aktuell) nicht möglich ist, den Task zu starten, ohne dass sich ein Benutzer anmeldet. Für ein Desktop-System stellt dies jedoch keinen Hindernissgrund dar. Für Serversysteme bietet sich die Möglichkeit den Task Scheduler per PowerShell geskriptet zu bedienen.

Non-Sucking Service Manager

Der NSSM steht ebenfalls unter Public Domain und ist somit für den größten Teil der Einsatzzwecke nutzbar. Mit ihm kann sehr einfach ein Windows Service aus einer beliebigen Datei erstellt werden. Einziges Manko hier: die Datei nssm.exe darf nach der Erstellung des Services auch nicht mehr verschoben werden, ansonsten startet der Service nicht mehr. Schön im Gegensatz zu den anderen (Windows) Methoden ist hier auch, dass der NSSM das gestartete Programm beobachtet und so den Status im Service Manager auch dementsprechend aktualisiert, sollte der Dienst beendet sein.

Leave a Reply

Your email address will not be published. Required fields are marked *