2016-03-30 3 views
1

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.

Antwort

0

Nachdem ich eine catch(Throwable) um die Hauptleitung gewickelt hatte, Logging, was heraussprang und dann wieder ohne zu werfen, sah ich das Problem. Ich habe eine java.lang.NoClassDefFoundError.

Endergebnis: procrun scheint Fehlertyp Ausnahmen zu schlucken und endet nicht einmal wenn man in das aufgerufene Java-Programm geworfen wird.

Erstellt ein Thema: https://issues.apache.org/jira/browse/DAEMON-344

Verwandte Themen