Ausprobieren Apache procrun Ich sehe ein Verhalten, das ich nicht verstehe. Es läuft auf die main
Methode des Java-Programms hinaus, das eine Ausnahme wirft. Dies wird nirgends protokolliert und der Windows-Dienst wird nicht beendet. Zur weiteren Untersuchung änderte ich die main
Methodeprocrun in --StartMode = Jvm running main, die Ausnahme auslöst, wird nicht beendet
public static void main(String[] args) throws Exception {
if (args.length<10000000) {
throw new Exception("one exception right away");
}
...
}
Als ich mit prunsrv.exe
dies als Dienst installieren und dann starten, startet es ohne Probleme und produziert keinerlei Protokollausgabe. Insbesondere hört der Service nicht auf.
Als Referenz hier ist, wie der Dienst mit procrun installiert ist:
& $procrun "//$operation//$service" `
--DisplayName="$service" `
--Description="$service" `
--DependsOn="$depends" `
--Startup=auto `
--Install="$procrun" `
--Jvm="$JVM" `
--Classpath="$cp" `
--Environment="PATH=$env:JAVA_HOME\bin" `
--JavaHome="$env:JAVA_HOME" `
--StartPath="c:\Search" `
--JvmOptions="-Xmx512M;-Xms512M;-Djava.awt.headless=true" `
--StartMode="jvm" `
--StartClass="$classname" `
--LogPath="c:\Search\std-logs" `
--LogPrefix="procrun-$service" `
--LogLevel="Debug" `
--StdError="c:\Search\std-logs\stderr-$no0" `
--StdOutput="c:\Search\std-logs\stdout-$no0" `
--StartParams="(unused)"
ich erwartet hätte, dass der Dienst sofort stoppt und ich finde einige Protokollausgabe in der stderr/stdout Dateien, aber nichts. Kann das jemand erklären?
EDIT: Oh mein, es scheint wie procrun
schluckt java.lang.Error
(in meinem Fall java.lang.noClassDefFoundError
) statt schreien, schreien und beenden.