Лучший способ запустить приложение Java в качестве демона *nix или службы Windows?
-
09-06-2019 - |
Вопрос
Я ищу лучший способ запуска приложения Java в качестве демона *NIX или службы Windows.Я заглянул в Оболочка службы Java, Проект Apache Commons «jsvc», и Проект Apache Commons «procrun».Пока что Java Service Wrapper выглядит лучшим вариантом...но мне интересно, есть ли какие-либо другие лицензионные продукты с открытым исходным кодом.
Решение
Я сам добился большого успеха с Java Service Wrapper.Я не рассматривал другие, но основные сильные стороны ServiceWrapper:
- Отличная поддержка X-платформы — я использовал ее в Windows и Linux, и мне было легко работать на обеих платформах.
- Надежная документация. Документы ясны и точны, с отличными примерами.
- Глубокая поддержка каждой платформы. В системе управления службами окон есть несколько уникальных функций, которые прекрасно поддерживаются оболочкой службы (без перезапуска).А в Windows вы даже увидите имя своего приложения в списке процессов, а не просто «java.exe».
- Соответствие стандартам. В отличие от многих специальных сценариев инициализации Java, сценарии для оболочки службы обычно соответствуют стандартам LSB.Это может оказаться очень важным, если вам когда-нибудь понадобится управление высокой доступностью с помощью чего-то вроде Linux Heartbeat/HA.
В любом случае, просто мои 2 цента...:)
Другие советы
Другой вариант: WinRun4J.Это только Windows, но имеет несколько полезных функций:
- Поддержка 32-битных и 64-битных версий
- API для доступа к журналу событий и реестру
- Можно зарегистрировать службу как зависящую от других служб (т. е. служба A и служба B должны запускаться до службы C).
Он также дружелюбен к открытому исходному коду (CPL), поэтому никаких ограничений на использование нет.
(полное раскрытие:Я работаю над этим проектом).
Есть ли какие-либо специальные атрибуты, которые вам необходимо применить (например, управление ресурсами на основе ОС), которые вам необходимо поддерживать?В противном случае для Unix вы сможете демонизировать свое приложение, написав соответствующий сценарий init.d и настроив приложение на автоматический запуск.