Лучшие практики создания Java-сервисов или сценариев демона - PullRequest
3 голосов
/ 11 августа 2009

Я ищу инструмент для запуска процессов java-сервера в качестве сервисов-демонов в Linux (и, возможно, в Windows и других ОС). Я ищу лучшие практики, когда речь идет о том, как создавать производственные сценарии и запускать конфигурацию.

Я знаком с лучшими практиками, когда дело доходит до сборки проекта, используя Apache Maven или что-то вроде Apache ANT + Ivy для управления процессом сборки и управления внешними зависимостями. и собирать артефакты и сборки.

Когда дело доходит до создания сборки проекта, содержащей скрипты конфигурации и запуска, а также весь скомпилированный код и зависимости, мне неясно, какой из них лучший. Есть ли хороший проект с открытым исходным кодом, который я мог бы рассмотреть в качестве примера, который связывает оболочку службы и сценарии конфигурации с их процессом сборки?

Мне удалось использовать Maven с плагином Jetty Launch для запуска моих веб-приложений, Плагин Terracotta Maven для тестирования нескольких узлов кластерного сервера JVM, и я использовал Maven's exec: java для запуска моих пользовательских серверов Java, но я не уверен, что использование Maven в этом качестве действительно «производственного» качества, а также означает, что мои производственные серверы зависят от построения серверов из источника и загрузки зависимостей с потенциально недоступных серверов.

Вот некоторые потенциальные вещи, которые я ищу в решении для запуска служб Java:

  1. Должен работать как служба Linux или процесс службы Windows
  2. Может быть построен с использованием плагина Maven или скрипта Ant и позволяет мне обрабатывать файлы конфигурации и скрипты
  3. Должен быть в состоянии включить все зависимости моего проекта от Apache Ant
  4. Должен иметь возможность подключиться к полноценному серверу веб-приложений Java (например, Jetty 7) и быть настроен на войну моего пользовательского веб-приложения
  5. Должен иметь возможность обрабатывать стандартную службу Java-демона (пользовательский сервер Java)

Вот некоторые варианты, которые я просматривал: Java Service Wrapper , который используется в плагине Maven appassembler .

Также использование подключаемого модуля для Maven и пользовательских дескрипторов сборки позволяет адаптировать вывод сборки.

Ответы [ 2 ]

3 голосов
/ 11 августа 2009

Java Service Wrapper, кажется, довольно распространен. Я видел, как его использовали несколько человек, особенно в nexus .

3 голосов
/ 11 августа 2009

Предпочтительный (иначе называемый «лучшая практика») способ реализации сервисов Linux всех видов - это создание сценария оболочки, который может запускать, останавливать и перезапускать сервис и помещать его в /etc/init.d. Затем добавьте соответствующие символические ссылки на него из соответствующих каталогов "rc. *". Обратитесь к Linux "man" записи для "init (8)", "chkconfig (8)" и т. Д.

...