WinSW¶
Windows Service Wrapper (WinSW) - это модуль, который оборачивает любое приложение и управляет им как службой Windows.¶
1) Необходимо скачать WinSW:
2) Создать папку на локальном диске с названием (Например myapp)
3) Перенести ранее скаченный файл WinSW в созданную нами папку.
4) Переименовать файл WinSW в название сервиса, который вы будете оборачивать, как службу. (Например myapp)
5) Создать одноименный файл XML, в данном случае myapp.xml
6) Открыть файл на редактирование с помощью текстового редактора, в данном случае используем notepad++
7) Копируем пример конфигурации ниже Теги:Теги:
Расширение переменной среды
XML-файлы конфигурации могут включать расширения переменных среды в форме Name. Такие вхождения, если они будут найдены, будут автоматически заменены фактическими значениями переменных. Если имеется ссылка на неопределенную переменную среды, подстановки не происходит.
Кроме того, оболочка службы сама устанавливает переменную среды BASE, указывающую на каталог, содержащий переименованный файл WinSW.exe . Это полезно для ссылки на другие файлы в том же каталоге. Поскольку это переменная среды сама по себе, к этому значению можно также получить доступ из дочернего процесса, запущенного из оболочки службы.
- id - Обязательный.
Указывает идентификатор, который Windows использует для внутренней идентификации службы. Он должен быть уникальным среди всех служб, установленных в системе, и должен полностью состоять из буквенно-цифровых символов.
<id>myapp</id>
- name - Необязательный .
Краткое отображаемое имя службы, которое может содержать пробелы и другие символы. Оно не должно быть слишком длинным, например как в теге <id>, и оно также должно быть уникальным среди всех служб в данной системе.
<name>myapp(powered by WinSW)</name>
- description - Необязательный.
Длинное удобочитаемое описание услуги. Это отображается в диспетчере служб Windows при выборе службы.
<description>run myapp service</description>
- executable - Обязательный.
Этот элемент указывает запускаемый исполняемый файл. Это может быть либо абсолютный путь, либо вы можете просто указать имя исполняемого файла и разрешить его поиск PATH.
<executable>java</executable>
- arguments - Необязательный.
Элемент указывает аргументы (параметры), которые необходимо передать исполняемому файлу.
<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
</arguments>
- logpath - Необязательный
Элемент указывает каталог, в котором создаются файлы журнала. Если этот элемент отсутствует, по умолчанию он будет находиться в том же каталоге, где находится файл конфигурации.
<logpath>%BASE%\logs</logpath>
- log (<log mode="roll-by-size"/>) - Необязательный
Элемент включает логирование и указывает какой режим логирования использовать. Если он не задан, то по умолчанию используется <log mode="append"/>.
Режимы (mode):
- mode="append"
В этом режиме создаются файлы myapp.out.log и myapp.err.log (где myapp — это базовое имя исполняемого файла и файла конфигурации), а выходные данные просто добавляются к этим файлам. Обратите внимание, что файл может стать довольно большим.
<log mode="append"/>
- mode="reset"
Работает так же, как и режим добавления, за исключением того, что при каждом запуске службы старые файлы журнала усекаются.
<log mode="reset"/>
- mode="none"
Данный режим отключает логирование.
<log mode="none"/>
- mode="roll-by-size"
Работает как режим добавления, но, кроме того, если файл журнала становится больше заданного размера, он скатывается в myapp.1.out.log , myapp.2.out.log и так далее. Вложенный <sizeThreshold> элемент указывает порог ротации в КБ (по умолчанию 10 МБ), а вложенный <keepFiles> элемент указывает количество сохраняемых свернутых файлов (по умолчанию 8).
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
- mode="roll-by-time">
Работает так же, как режим прокрутки, за исключением того, что вместо размера в качестве порога используется период времени в качестве порога.
Эта конфигурация должна сопровождать вложенный <pattern>элемент, который определяет шаблон метки времени, используемый в качестве имени файла журнала.
<log mode="roll-by-time">
<pattern>yyyyMMdd</pattern>
</log>
- mode="roll-by-size-time"
Работает в сочетании режима размера файла и режима времени файла. Если файл журнала становится больше заданного размера, он свертывается с использованием <pattern>предоставленного.
<log mode="roll-by-size-time">
<sizeThreshold>10240</sizeThreshold>
<pattern>yyyyMMdd</pattern>
<autoRollAtTime>00:00:00</autoRollAtTime>
</log>
- delayedAutoStart - Необязательный
Этот логический параметр включает режим отложенного запуска, если режим Automaticзапуска определен.
Обратите внимание, что этот режим запуска не повлияет на старые версии Windows старше Windows 7 и Windows Server 2008. В этом случае установка службы Windows может завершиться ошибкой.
<delayedAutoStart>true</delayedAutoStart>
- onfailure - Необязательный
Этот необязательный повторяющийся элемент управляет поведением, когда процесс, запущенный winsw, дает сбой (т. е. завершается с ненулевым кодом выхода).
<onfailure action="restart" delay="10 sec"/>
<onfailure action="restart" delay="20 sec"/>
<onfailure action="reboot" />
Например, в приведенной выше конфигурации служба перезапускается через 10 секунд после первого сбоя, перезапускается через 20 секунд после второго сбоя, а затем Windows перезагружается, если служба дает сбой еще раз.
Действие (action):
- restart - перезапустить службу
- reboot - перезагрузить Windows
- none - ничего не делать и оставить службу остановленной
- workingdirectory - Необязательный
Некоторые службы должны работать с указанным рабочим каталогом. Для этого укажите такой <workingdirectory> элемент.
<workingdirectory>C:\myapp</workingdirectory>
- priority - Необязательный
При необходимости укажите приоритет планирования процесса обслуживания.
<priority>normal</priority>
<service>
<id>myapp</id>
<name>myapp(powered by WinSW)</name>
<description>run myapp service</description>
<executable>java</executable>
<arguments>-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
</arguments>
<logpath>%BASE%\logs</logpath>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
<delayedAutoStart>true</delayedAutoStart>
<onfailure action="restart" delay="20 sec"/>
<workingdirectory>C:\myapp</workingdirectory>
<priority>normal</priority>
</service>
8) Вставляем конфигурацию в файл открытый на редактировании.
9) Запустить myapp.exe install [options], чтобы установить службу.
Опции (Options)Опции (Options)
- --no-elevate - Не вызывает автоматически запрос UAC.
- --user|--username <username> - Указывает имя пользователя учетной записи службы.
- --pass|--password <password> - Указывает пароль учетной записи службы.
10) Запустить, чтобы использовать. myapp.exe start [путь до myapp.xml] --no-elevate
11) Запустить, чтобы увидеть, запущен ли ваш сервис. myapp.exe status [путь до myapp.xml]
Статусы (Status)Статусы (Status)
- Active - Служба запущена
- Inactive - Служба остановлена