Реализация 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 все еще нуждается в этом.

Другие вопросы по тегам