Estoy usando un jsvc nativo compilado para iniciar un daemon java. Estoy ejecutando esto en un openSUSE 32 bit vm. El código implementa la interfaz daemon de Apache y estoy ejecutando el comando deamon con el siguiente comando.Apache jsvc no puede detener a Daemon
./jsvc -home jre -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
Se inicia y funciona sin problemas. Puedo iniciar el daemon como un usuario normal y como root. Sin embargo, cuando voy a terminar el daemon, jsvc mata el proceso en lugar de emitir un comando de detención.
./jsvc -stop -home jre -outfile logs/jsvc.err -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
El proceso demonio muere, pero no ejecuta ninguna de sus etapas de apagado (por ejemplo, se debe registrar, marcar un registro en la base de datos, etc.). Me sale el siguiente en el archivo de logs/jsvc.err, y no escribe cualquier otro registros:
Service exit with return value 143
Tras Google el error, estoy viendo un puñado de personas que todos han visto la misma cosa , pero en ninguna parte puedo encontrar una buena resolución (http://mail-archives.apache.org/mod_mbox/commons-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).
ACTUALIZACIÓN: Usando lanzador servicio de la ventana de Apache (procrun) Soy capaz de iniciar y detener el servicio sin ningún problema. El problema parece ser solo relacionado con jsvc, y solo al detener el daemon.
ACTUALIZACIÓN 2: Después de leer el http://commons.apache.org/daemon/jsvc.html#Starting_jsvc más detenidamente, me di cuenta de que la etiqueta de parada Estoy cuestiones utilizando un comando kill pn el proceso a través del archivo pid especifico. Parece que jsvc en realidad no detiene al daemon con gracia por diseño. Esto es consistente con el comportamiento que estoy viendo, ya que el método de parada muy detallado no está escribiendo ningún mensaje.
-stop stop the service using the file given in the -pidfile option
nuevas preguntas:
- Si mi java principal ha implementado la interfaz Apache Daemon, ¿cómo puedo emitir un 'stop' en el demonio que se ejecuta?
- ¿Necesito algo más que jsvc (que parece que solo es útil para iniciar o matar al daemon)?