Ich verwende eine native kompilierte jsvc, um einen Java-Daemon zu starten. Ich führe dies auf einem openSUSE 32 bit vm. Der Code implementiert Apache Daemon-Schnittstelle, und ich führe die Deamon mit dem folgenden Befehl.Apache jsvc kann Daemon nicht stoppen
./jsvc -home jre -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
Es beginnt und läuft ohne ein Problem. Ich kann den Daemon als normaler Benutzer und als root starten. Wenn ich jedoch den Daemon beenden möchte, beendet jsvc den Prozess und gibt keinen Stoppbefehl aus.
./jsvc -stop -home jre -outfile logs/jsvc.err -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
Der Daemon-Prozess stirbt, aber nicht jeder seiner Abschaltung Schritte ausführen (zum Beispiel, sollte es sich einzuloggen, markieren einen Datensatz in der db, etc). Ich werde im Anschluss an die in der logs/jsvc.err-Datei, und es schreibt keine andere Protokolle:
Service exit with return value 143
Nach den Fehler googeln, ich eine Handvoll Leute bin zu sehen, die alle haben das Gleiche gesehen , aber nirgendwo kann ich eine gute Lösung finden (http://mail-archives.apache.org/mod_mbox/common-dev/200401.mbox/%[email protected] es% 3E, http://www.tek-tips.com/viewthread.cfm?qid=1014679, http://threebit.net/mail-archive/tomcat-users/msg03832.html).
UPDATE: Apache Fenster Service-Launcher (procrun) Ich kann den Service ohne Probleme starten und zu stoppen. Das Problem scheint nur mit jsvc verbunden zu sein und nur beim Stoppen des Daemon.
UPDATE 2: Nach dem http://commons.apache.org/daemon/jsvc.html#Starting_jsvc sorgfältiger Lektüre, bemerkte ich, dass der Anschlag TAGi ich Probleme einen Kill-Befehl pn den Prozess über die pid-Datei angeben bin mit. Es scheint, dass jsvc den Daemon eigentlich nicht vom Design abhält. Dies ist konsistent mit dem Verhalten, das ich sehe, da die sehr ausführliche Stop-Methode keine Nachrichten ausgibt.
-stop stop the service using the file given in the -pidfile option
Neue Fragen:
- Wenn mein Java-Haupt-Apache Daemon Schnittstelle implementiert hat, wie ich eine Ausgabe von 'Stop' auf dem laufenden Daemon?
- Benötige ich etwas anderes als jsvc (das scheint nur nützlich zu sein, um den Daemon zu starten oder zu beenden)?