h1. WinSW h2. Windows Service Wrapper (WinSW) - это модуль, который оборачивает любое приложение и управляет им как службой Windows. 1) Необходимо скачать "WinSW":https://rm.cwms3000.ru/attachments/download/13837/WinSW-x64.exe: 2) Создать папку на локальном диске с названием *(Например myapp)* !1.png! 3) Перенести ранее скаченный файл WinSW в созданную нами папку. !2.png! 4) Переименовать файл WinSW в название сервиса, который вы будете оборачивать, как службу. (Например myapp) !3.png! 5) Создать одноименный файл XML, в данном случае myapp.xml !4.png! 6) Открыть файл на редактирование с помощью текстового редактора, в данном случае используем notepad++ !5.png! 7) Копируем пример конфигурации ниже {{collapse(Теги:) *Расширение переменной среды XML-файлы конфигурации могут включать расширения переменных среды в форме %Name%. Такие вхождения, если они будут найдены, будут автоматически заменены фактическими значениями переменных. Если имеется ссылка на неопределенную переменную среды, подстановки не происходит.* *Кроме того, оболочка службы сама устанавливает переменную среды BASE, указывающую на каталог, содержащий переименованный файл WinSW.exe . Это полезно для ссылки на другие файлы в том же каталоге. Поскольку это переменная среды сама по себе, к этому значению можно также получить доступ из дочернего процесса, запущенного из оболочки службы.* * id - *Обязательный*. Указывает идентификатор, который Windows использует для внутренней идентификации службы. Он должен быть уникальным среди всех служб, установленных в системе, и должен полностью состоять из буквенно-цифровых символов.

myapp
* name - *Необязательный* . Краткое отображаемое имя службы, которое может содержать пробелы и другие символы. Оно не должно быть слишком длинным, например как в теге , и оно также должно быть уникальным среди всех служб в данной системе.

myapp(powered by WinSW)
* description - *Необязательный*. Длинное удобочитаемое описание услуги. Это отображается в диспетчере служб Windows при выборе службы.

run myapp service
* executable - *Обязательный*. Этот элемент указывает запускаемый исполняемый файл. Это может быть либо абсолютный путь, либо вы можете просто указать имя исполняемого файла и разрешить его поиск PATH(хотя обратите внимание, что службы часто запускаются в другой учетной записи пользователя и, следовательно, могут отличаться PATH от вашей оболочки).

java
* arguments - *Необязательный*. Элемент указывает аргументы (параметры), которые необходимо передать исполняемому файлу.

-jar
http-dpc-service-0.0.1-SNAPSHOT.jar
--spring.datasource.url=jdbc:oracle:thin:@192.168.1.64:1521:ful
--spring.datasource.username=ful
--spring.datasource.password=ful
--server.servlet.contextPath=/cwms
--debug=false

* logpath - *Необязательный* Элемент указывает каталог, в котором создаются файлы журнала. Если этот элемент отсутствует, по умолчанию он будет находиться в том же каталоге, где находится файл конфигурации.

%BASE%\logs
* log () - *Необязательный* Элемент включает логирование и указывает какой режим логирования использовать. Если он не задан, то по умолчанию используется . *Режимы (mode):* ** mode="append" В этом режиме создаются файлы myapp.out.log и myapp.err.log (где myapp — это базовое имя исполняемого файла и файла конфигурации), а выходные данные просто добавляются к этим файлам. Обратите внимание, что файл может стать довольно большим.


** mode="reset" Работает так же, как и режим добавления, за исключением того, что при каждом запуске службы старые файлы журнала усекаются.


** mode="none" Данный режим отключает логирование.


** mode="roll-by-size" Работает как режим добавления, но, кроме того, если файл журнала становится больше заданного размера, он скатывается в myapp.1.out.log , myapp.2.out.log и так далее. Вложенный элемент указывает порог ротации в КБ (по умолчанию 10 МБ), а вложенный элемент указывает количество сохраняемых свернутых файлов (по умолчанию 8).


  10240
  8

** mode="roll-by-time"> Работает так же, как режим прокрутки, за исключением того, что вместо размера в качестве порога используется период времени в качестве порога. Эта конфигурация должна сопровождать вложенный элемент, который определяет шаблон метки времени, используемый в качестве имени файла журнала.


  yyyyMMdd

** mode="roll-by-size-time" Работает в сочетании режима размера файла и режима времени файла. Если файл журнала становится больше заданного размера, он свертывается с использованием предоставленного.


  10240
  yyyyMMdd
  00:00:00

* delayedAutoStart - *Необязательный* Этот логический параметр включает режим отложенного запуска, если режим Automaticзапуска определен. Обратите внимание, что этот режим запуска не повлияет на старые версии Windows старше Windows 7 и Windows Server 2008. В этом случае установка службы Windows может завершиться ошибкой.

true
* onfailure - *Необязательный* Этот необязательный повторяющийся элемент управляет поведением, когда процесс, запущенный winsw, дает сбой (т. е. завершается с ненулевым кодом выхода).




Например, в приведенной выше конфигурации служба перезапускается через 10 секунд после первого сбоя, перезапускается через 20 секунд после второго сбоя, а затем Windows перезагружается, если служба дает сбой еще раз. *Действие (action):* ** restart - перезапустить службу ** reboot - перезагрузить Windows ** none - ничего не делать и оставить службу остановленной * workingdirectory - *Необязательный* Некоторые службы должны работать с указанным рабочим каталогом. Для этого укажите такой элемент.

C:\myapp
* priority - *Необязательный* При необходимости укажите приоритет планирования процесса обслуживания.

normal
}}


myapp
myapp(powered by WinSW)
run myapp service
java
-jar mcis-mobile-service_0.0.6-WOL.jar 
  --spring.datasource.url=jdbc:oracle:thin:@192.168.1.89:1521:tst 
  --spring.datasource.username=tst 
  --spring.datasource.password=st 
  --server.port=10081 
  --app.session.timeout=900000

%BASE%\logs

10240
8

true

C:\myapp
normal

8) Вставляем конфигурацию в файл открытый на редактировании. !6.png! 9) Запустить myapp.exe install [options], чтобы установить службу. {{collapse(Опции (Options)) * --no-elevate - Не вызывает автоматически запрос UAC. * --user|--username - Указывает имя пользователя учетной записи службы. * --pass|--password - Указывает пароль учетной записи службы. }} !7.png! 10) Запустить, чтобы использовать. myapp.exe start [путь до myapp.xml] --no-elevate !8.png! 11) Запустить, чтобы увидеть, запущен ли ваш сервис. myapp.exe status [путь до myapp.xml] !9.png! {{collapse(Статусы (Status)) * Active - Служба запущена * Inactive - Служба остановлена }}