JAVA Service

Простой способ запуска java-приложения как сервиса


Покопавшись на просторах интернета пришел к выводу что запуск java-приложений как сервисов - служб это задача востребованная, но не всегда легко реализуемая.

  1. Можно использовать сторонние решения но они не всегда бесплатны, не всегда подходят под наши критерии использования и т.д.
  2. Конечно можно перелопатить Tomcat и заставить его стартовать нашу jar-ку но там тоже есть подводные камни.
  3. И есть еще одно решение  - можно просто написать windows service используя любой знакомый язык программирования под винду, и научить его работать с нашим java-приложением. Вот этим решением мы и воспользуемся.
Описание : 
   Написать службу которая при старте будет выполнять файл Start.bat а при завершении Stop.bat. И в дополнение составить несколько batch- файлов для установки, запуска, останова и деинстоляции сервиса.

не буду вдаваться в подробности создания сервиса. его я написал на delphi за 10 минут. потому как прекрасная IDE Delphi 7 вечна ! и может все, особенно выполнять всю работу за нас!
если кому интересен код то , вот все что я добавил к стандартному проекту

//метод выполняемый на старте
       

procedure TService.ServiceStart(Sender: TService;var Stopped: Boolean)
begin

ShellExecute(Service.ServiceThread.Handle, 'open', 'start.bat', nil, PChar(ExtractFilePath(ParamStr(0))), SW_MAXIMIZE)

end;
       


//метод выполняемый на завершение
       

procedure TService.ServiceStop(Sender: TService;var Stopped: Boolean);
begin

ShellExecute(Service.ServiceThread.Handle, 'open', 'stop.bat', nil , PChar(ExtractFilePath(ParamStr(0))) , SW_MAXIMIZE)

end;
       



и вот это в uses ShellAPI;

сервис у нас готов, осталось дело за малым - батники!

service_install.bat

Service_name.exe /install /silent

- /silent - для того что бы не выводился диалог о том что установка прошла успешно

service_uninstall.bat

Service_name.exe /uninstall /silent

service_start.bat

Net start Service_Title

service_stop.bat

Net stop Service_Title

вот и все. Теперь создадим в каталоге с сервисом файлы Start.bat и Stop.bat и в них напишем команды для запуска и останова java-машины с приложением на борту. 

для примера выкладываю ссылку на архив с готовыми батниками и сервисом. сервис проверен на Windows XP - Seven.