Так сложилось, что в последнее время мне всё чаще и чаще приходится устанавливать разработанные приложения в окружениях под управлением операционных систем семейства Windows Server. JavaEE-приложения обычно развёртываются на каком-либо сервере приложений, который, если всё делать по-правильному, должен быть сконфигурирован в качестве службы Windows. Отсюда возникла целая серия заметок, в первой из которых я рассказывал о решении этой задачи для сервера приложений Sun / Oracle GlassFish, а во второй - для Apache Tomcat. В этой заметке я продолжу начатую тему и расскажу о создании службы Windows для выбранного профиля сервера приложений IBM WebSphere.
Технические нюансы
Сразу отмечу, что в случае WebSphere решение поставленной задачи не вызвало у меня каких-либо проблем - вся необходимая информация легко находится в документации IBM к своему серверу приложений. Единственный нюанс заключается в том, что в разных версиях WebSphere для создания службы используются разные утилиты, так что стоит заранее убедиться, с какой версией сервера приложений вы работаете. Инструкцию по конфигурации службы для предыдущей версии WebSphere можно посмотреть здесь.
Постановка задачи
Для конкретики примем, что мы используем WebSphere актуальной версии 8.5.X и Windows Server 2012. Административной единицей установленного сервера приложений является так называемый профиль (profile) - совокупность приложений и сервисов, администрируемых централизованно. По сути, профиль - это практически полный аналог домена GlassFish.
Так как отдельные профили администрируются независимо друг от друга, службы надо создавать для каждого профиля по-отдельности. Для того профиля, который был создан при установке WebSphere (если вы, конечно, выбрали опцию создания нового профиля в установщике), служба конфигурируется автоматически, поэтому ничего больше делать не нужно.
Утилита WasService.exe
Для всех остальных профилей службы Windows надо конфигурировать вручную. Самый простой способ сделать это - использовать утилиту WasService.exe
из комплекта поставки WebSphere. Она находится в каталоге %WEBSPHERE_HOME%\AppServer\bin
. Синтаксис у неё простой:
WasService.exe -command <service name> [-argument <value>]*
Основные команды следующие:
1. Создание нового сервиса:
-add <service name>
-serverName <Server>
-profilePath <Server's Profile Directory>
[-wasHome <Websphere Install Directory>]
[-configRoot <Config Repository Directory>]
[-startArgs <additional start arguments>]
[-stopArgs <additional stop arguments>]
[-userid <execution id> -password <password>]
[-logFile <service log file>]
[-logRoot <server's log directory>]
[-encodeParams]
[-restart <true | false>]
[-startType <automatic | manual | disabled>]
Имя сервиса можно выбрать произвольное; имя сервера и путь к профилю определяются конфигурацией сервера приложений и местонахождением профиля в файловой системе. Остальные аргументы являются опциональными и позволяют переопределить значения по умолчанию.
2. Удаление сервиса:
-remove <service name>
3. Запуск сервиса:
-start <service name> [optional startServer.bat parameters]
4. Остановка сервиса:
-stop <service name> [optional stopServer.bat parameters]
Командам запуска и остановки можно задать дополнительные аргументы, которые будут переданы на вход утилитам startServer.bat
и stopServer.bat
, соответственно. Этими командами можно и не пользоваться, а использовать вместо них панель управления сервисами - мы в итоге поступим именно так.
Конфигурация службы
Итак, с теоретическими вопросами разобрались, теперь посмотрим, что получится на практике. Т.к. для дефолтного AppSrv01
служба уже создана, создадим новый профиль. Для этого откроем WebSphere Customization Toolbox и кликнем "Создать":

Не будем оригинальничать, и назовём профиль AppSrv02
.
Теперь попробуем сконфигурировать службу для него. Для этого запустим командную строку (обязательно из-под администратора), перейдём в каталог с бинарниками WebSphere и запустим утилиту WasService.exe со следующими аргументами:
c:\IBM\WebSphere\AppServer\bin>WASService.exe -add WAS2
-profilePath c:\IBM\WebSphere\AppServer\profiles\AppSrv02
-serverName server1
Имя сервера оставляем дефолтным, в profilePath
указываем путь к AppSrv02
. Смотрим, что у нас получилось:

Проверяем, добавилась ли служба:

Добавилась! Задача успешно решена.