Есть ли способ в java проверить статус службы Windows?

Я ищу библиотеку, которая позволит мне посмотреть статус службы Windows, чтобы убедиться, что служба запущена и работает. Я заглянул в библиотеку Sigar, но это GPL, и поэтому я не могу ее использовать. Требуется коммерческая лицензия или лицензия BSD (ish), поскольку она будет включена в коммерческое программное обеспечение.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
7 844
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я не знаю ни одной библиотеки, но в зависимости от того, насколько подробно вам нужно получить, вы можете обойтись некоторыми командами оболочки и анализом вывода.

ЧИСТЫЙ СТАРТ наименование услуги

либо запустит службу, либо вернет вам сообщение об ошибке, в котором сообщается, что она уже запущена. Я не знаю ни одной команды, которая просто сообщила бы вам статус.

Я не думаю, что существует какой-либо способ сделать это на чистом Java, потому что в некоторых операционных системах нет понятия «службы», как в Windows. В наших проектах мы написали оболочку для вызовов команды «sc» из командной строки. Чтобы получить статус услуги, вы можете:

sc \some-computer query "my service name"

Вам придется вручную проанализировать вывод, но это довольно просто.

хороший простой способ сделать это на Java

Jan Gressmann 25.03.2010 20:50
Ответ принят как подходящий

Если ничего не помогает, попробуйте придумать немного другой подход (если, конечно, можете), например:

  • Существует множество бесплатных / несвободных программ, которые выполняют мониторинг, включая мониторинг служб Windows (например, nagios, Zabbix и т. д.). Эти мониторы обычно имеют открытый API, в который ваше Java-приложение может интегрироваться различными способами.
  • Если у вас есть контроль над зависимым сервисным приложением, предоставьте вашему Java-приложению другой способ проверки (например, запуск фиктивного прослушивателя на порту, создание файла и т. д.). Службы Windows не являются кроссплатформенными, поэтому вы не ожидаете, что они будут поддерживаться в ближайшее время.

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