Я использую собственный скомпилированный jsvc для запуска java-демона. Я запускаю это на openSUSE 32 бит vm. Код реализует интерфейс daemon Apache, и я выполняю деамон со следующей командой.
./jsvc -home jre -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
Он запускается и запускается без проблем. Я могу запустить демона как обычный пользователь и как root. Однако, когда я иду на завершение демона, jsvc убивает процесс, а не выдаёт команду остановки.
./jsvc -stop -home jre -outfile logs/jsvc.err -errfile logs/jsvc.err -pidfile daemon.pid -cp <my_classpath> com.loader.loaderservice.LoaderDaemon
Процесс daemon умирает, но не выполняет никаких шагов его выключения (например, он должен регистрироваться, отмечать запись в db и т.д.). Я получаю следующее в файле logs/jsvc.err и не записывает никаких других журналов:
Service exit with return value 143
После ошибки в googling я вижу несколько людей, которые все видели одно и то же, но нигде не могу найти хорошее разрешение (http://mail-archives.apache.org/mod_mbox/commons-dev/200401.mbox/%3CPine.GSO.3.96.1[email protected]%3E, http://www.tek-tips.com/viewthread.cfm?qid=1014679, http://threebit.net/mail-archive/tomcat-users/msg03832.html).
UPDATE: Использование Apache window service launcher (procrun) Я могу запустить и остановить службу без каких-либо проблем. Проблема, по-видимому, связана только с jsvc и только при остановке демона.
ОБНОВЛЕНИЕ 2: Прочитав http://commons.apache.org/daemon/jsvc.html#Starting_jsvc более подробно, я заметил, что тег остановки, который я использую, вызывает команду kill pn процесса через файл pid, который я указываю. Похоже, что jsvc фактически не останавливает демона изящно по дизайну. Это согласуется с поведением, которое я вижу, поскольку очень сложный метод остановки не пишет никаких сообщений.
-stop stop the service using the file given in the -pidfile option
Новые вопросы:
- Если в моем java-сервере был реализован интерфейс Apache Daemon, как я могу сделать "остановку" на запущенном демоне?
- Нужно ли мне что-то другое, кроме jsvc (что кажется ему полезным только для запуска или убийства демона)?