Mittwoch, 18. August 2010

Java as Windows Service - Teil 2 (Apache prunsrv)

Nach vielen Experimenten mit verschiedenen Anwendungen (siehe vorheriger Blog Eintrag) bin ich nun auch auf Apache Commons Deamon Procrun gestoßen. Gleich vorweg: Mit diesem hatte ich am wenigsten Probleme und konnte meine Java Anwendung sehr schnell als Windows Service Installieren. Auch gibt es extrem viele Einstellungsmöglichkeiten, so dass hier eigentlich keine Wünsche übrig bleiben. Zu finden gibt es das Programm und die Dokumentation hier:

http://commons.apache.org/daemon/procrun.html

Anwendungsbeispiel:
Einfach eine DOS Batch Datei schreiben mit in etwa folgendem Inhalt:

REM ########## Service Variables ###########
set SERVICE_NAME=MyJavaService
set PR_DESCRIPTION=Mein Java Windows Service
set PR_INSTALL=prunsrv.exe

set PR_LOGPATH=c:\logs
set PR_CLASSPATH=%CLASSPATH%
set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll
set PR_STDOUTPUT=
c:\logs\stdout.txt
set PR_STDERROR=
c:\logs\stderr.txt
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=de.test.MyJavaService
set PR_LOGPREFIX=%
SERVICE_NAME%_service
set PR_STARTPARAMS=param1;param2;param3;param4
set PR_JVMMS=256
set PR_JVMMX=1024
set PR_JVMSS=4000
set PR_JVMOPTIONS=-Duser.language=DE;-Duser.region=de
set PR_LOGLEVEL=Error

REM Install service
prunsrv.exe //IS//%SERVICE_NAME%

REM Uninstall service
prunsrv.exe //DS//%SERVICE_NAME%


Es gibt noch eine Vielzahl weiterer Möglichkeiten. Unter anderem kann eine Start Methode angegeben werden, welche ausgeführt wird (anstatt main(...)). Auch können Abhängigkeiten zu anderen Services angegeben werden und User/passwort, unter welchem der Service laufen soll. Zum Herunterfahren kann auch eine Stop Klasse mit Parametern und eventueller Stop-Methode angegeben werden.

Besonders sei hier noch zu erwähnen, dass auch nach der Installation noch änderungen vogenommen werden können. Möglich ist dies entweder über die Kommandozeile mittels prunsrv.exe //US//%SERVICE_NAME%, oder aber auch grafisch. Dazu einfach das mitgelieferte Programm prunmgr.exe umbenennen in .exe (hier also MyJavaService.exe) und ausführen. Fast alle möglichen Einstellungen finden sich hier wieder und können im laufenden betrieb angepasst werden. Der Vollständigkeit halber sei hier auch noch erwähnt, dass die Einstellungen auch in der Registry nachgeschaut bzw. angepasst werden können unter folgendem Schlüssel:

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0

Achtung:
Ich habe zuerst die tomcat5.exe meiner Tomcat 5.5 Installation verwendet (ebenfalls procrun). Diese ist jedoch sehr fehlerhaft und einige der Parameter funktionieren nicht richtig (Beispiel: Memory Settings) und müssen nachträglich in der Registry manuell geändert werden. Daher immer die aktuelle Version verwenden.

Keine Kommentare:

Kommentar veröffentlichen