Sto utilizzando un jsvc nativo compilato per avviare un daemon java. Sto facendo funzionare questo su un VM di openSUSE a 32 bit. Il codice implementa l'interfaccia demone di Apache e sto eseguendo il demone con il seguente comando.Apache jsvc non interrompe il daemon
./jsvc -home jre -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
Si avvia e funziona senza problemi. Posso avviare il demone come utente normale e come root. Tuttavia, quando vado a terminare il demone, jsvc uccide il processo anziché emettere un comando di stop.
./jsvc -stop -home jre -outfile logs/jsvc.err -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
Il processo demone muore, ma non esegue una qualsiasi delle sue fasi di arresto (per esempio, dovrebbe registrare, segnare un record nel db, ecc). Ottengo il seguente nel file logs/jsvc.err, e non scrivere alcun altri registri:
Service exit with return value 143
Dopo googling l'errore, sto vedendo una manciata di persone che tutti hanno visto la stessa cosa , ma da nessuna parte posso trovare una buona risoluzione (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).
UPDATE: Utilizzando servizio di avvio della finestra di Apache (procrun) sono in grado di avviare e interrompere il servizio senza problemi. Il problema sembra essere solo relativo a jsvc e solo all'arresto del demone.
UPDATE 2: Dopo aver letto il http://commons.apache.org/daemon/jsvc.html#Starting_jsvc con più attenzione, ho notato che il tag fermata sto usando emette un comando kill pn il processo tramite il file pid specificata. Sembra che jsvc in realtà non fermi il demone con grazia in base alla progettazione. Questo è coerente con il comportamento che sto vedendo, poiché il metodo di interruzione molto verboso non sta scrivendo alcun messaggio.
-stop stop the service using the file given in the -pidfile option
Nuove domande:
- Se la mia principale Java ha implementato l'interfaccia Apache Daemon, come faccio a emettere un 'stop' sul demone di esecuzione?
- Ho bisogno di qualcosa di diverso da jsvc (che sembra sia utile solo per avviare o uccidere il demone)?