Реализация JSVC напрямую без jar-файла apache-commons-daemon
Согласно документации Apache Commons ( https://commons.apache.org/proper/commons-daemon/jsvc.html), я должен иметь возможность запускать свое приложение как демон напрямую, используя jsvc без реализации класса Daemon:
непосредственно
Напишите класс (MyClass), который реализует следующие методы:
- void init (String [] arguments): здесь открываются файлы конфигурации, создается файл трассировки, создаются ServerSockets, Threads
- void start (): запустить поток, принять входящие соединения
- void stop(): информировать поток о завершении run(), закрыть ServerSockets
- void destroy (): уничтожить любой объект, созданный в init()
Сохраните его в jarfile и используйте как указано выше:
./jsvc -cp my.jar MyClass
MyClass реализует описанные выше методы и не реализует класс Daemon. Однако, если я попытаюсь вызвать jsvc, как указано выше, без включения commons-daemon.jar в мой путь к классу,
Я получаю следующую ошибку:
Cannot find the daemon loader org/apache/commons/daemon/support/DaemonLoader
java_init failed
Если я включу его в classpath, все работает нормально., Т.е.
./jsvc -cp commons-daemon.jar:my.jar MyClass
Насколько я понимаю из документации, мне не нужно включать commons-daemon.jar, если я не использую что-либо из этой библиотеки, а просто вызываю jsvc непосредственно в моем классе с необходимыми реализованными методами. Это неверно? Я не хочу связывать ненужные банки с моей посылкой.
1 ответ
Я должен иметь возможность запускать свое приложение как демон напрямую, используя jsvc без реализации класса Daemon Correct.
Однако, если я попытаюсь вызвать jsvc, как указано выше, без включения commons-daemon.jar в мой путь к классу. Здесь вы ошиблись. Вам нужно commons-daemon.jar
вы просто не реализуете Daemon
, Apache JSVC все еще нуждается в этом.