Запуск Oracle WebLogic 11g Forms and Reports Services как сервис Windows

Oracle WebLogic windows service
Про установку и настройку Forms и Reports Services для Oracle WebLogic 11g мы уже писали ранее в специальных публикациях. Однако сервера форм и отчетов по умолчанию запускаются вручную в отдельной консоли Windows в виде Java приложений, если говорить про эксплуатацию WebLogic на Windows. Ручной запуск не может удовлетворить при повседневной эксплуатации серверов, хотелось бы запускать их автоматически при загрузке операционной системы Windows. Как это сделать и пойдет речь в этой статье.
Как запускать сервера WebLogic в качестве Windows сервисов написано и в официальной документации Oracle, но здесь мы приведем работоспособное решение применительно именно к связке FormsReports и Admin сервисов WebLogic. Необходимо, чтобы все эти сервисы автоматически запускались при старте Windows, причем сначала должен запускаться AdminServer, затем Forms и Reports сервера с некоторой задержкой, достаточной для запуска AdminServer.
WebLogic содержит все необходимые скрипты для того, чтобы создавать сервисы Windows. Эти скрипты находятся в каталоге

1
c:oracleMiddlewarewlserver_10.3serverbin
при условии, что WebLogic установлен в каталог c:oracleMiddleware. Скрипты называются installSvc.cmd для создания нового сервиса Windows, и uninstallSvc.cmd для его удаления. Эти скрипты должны вызываться из скриптов, которые мы должны написать сами и которые устанавливают необходимые параметры наших WebLogic серверов. Наша задача состоит в том, чтобы написать по два скрипта на каждый требуемый нам сервер: для создания Windows сервиса и его удаления соответственно. 
Нам также при запуске необходимо выполнить условие: сначала должен запускаться AdminServer, затем Forms и Reports сервера, которые должны запускаться как зависимые сервисы Windows от AdminServer. В документации на WebLogic указано, что это можно сделать путем правки скрипта installSvc.cmd, причем для AdminServer-а требуется своя доработка, а для зависимых серверов своя. Что на взгляд автора не очень удобно. Поэтому предлагается оригинальный файл скрипта installSvc.cmd не трогать, а сделать две его копии, одну для создания сервиса для AdminServer, другую для создания Forms и Reports сервисов. Назовем первую копию installAdminSvc.cmd, вторую – installDependSvc.cmd.
Далее для правки installAdminSvc.cmd нам необходимо знать примерное время, которое требуется для запуска AdminServer-а. Допустим вы измерили это время и оно составляет 2 минуты. Открываем файл installAdminSvc.cmd и в самом его конце правим следующие строки:

1
2
rem *** Install the service
"%WL_HOME%serverbinbeasvc" -install -svcname:"beasvc %DOMAIN_NAME%_%SERVER_NAME%" -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" -maxconnectretries:"%MAX_CONNECT_RETRIES%" -host:"%HOST%" -port:"%PORT%" -extrapath:"%EXTRAPATH%" -password:"%WLS_PW%" -cmdline:%CMDLINE%
добавляем -delay:120000 (120000 – это наши 2 минуты, требуемые на запуск AdminServer-а)

1
2
rem *** Install the service
"%WL_HOME%serverbinbeasvc" -install -svcname:"beasvc %DOMAIN_NAME%_%SERVER_NAME%" -delay:120000 -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" -maxconnectretries:"%MAX_CONNECT_RETRIES%" -host:"%HOST%" -port:"%PORT%" -extrapath:"%EXTRAPATH%" -password:"%WLS_PW%" -cmdline:%CMDLINE%
Указанный нами параметр задержки позволит при запуске сервиса для AdminServer-а ждать окончания запуска сервиса две минуты в Windows Service Control Manager (SCM). Иными словами Windows SCM только через 2 минуты изменит статус с SERVER_START_PENDING на STARTED. Для того, чтобы Windows сервисы для Forms и Reports терпеливо ждали окончания запуска AdminServer-а эти две минуты, необходимо при их создании указать, что они от него зависимы. Сделаем это изменив файл installDependSvc.cmd, добавив в те же строки, что были указаны выше, параметр -depend:”beasvc myDomain_myAdminServer”, где myDomain – имя вашего WebLogic домена (при установке WebLogic по умолчанию – ClassicDomain), myAdminServer – имя вашего AdminServer-а (при установке WebLogic по умолчанию – AdminServer)

1
2
rem *** Install the service
"%WL_HOME%serverbinbeasvc" -install -svcname:"beasvc %DOMAIN_NAME%_%SERVER_NAME%" -depend:"beasvc myDomain_myAdminServer" -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" -maxconnectretries:"%MAX_CONNECT_RETRIES%" -host:"%HOST%" -port:"%PORT%" -extrapath:"%EXTRAPATH%" -password:"%WLS_PW%" -cmdline:%CMDLINE%
Также здесь можно указать параметр -delay если хотите, чтобы зависимые от AdminServer сервисы Oracle Forms и Reports внешне запускались с таймаутом, примерно соответствующим реальному времени загрузки их WebLogic серверов.
Теперь можно приступать к написанию скрипта для создания сервиса для AdminServer-а. Скрипт будет иметь имя installAdmin.cmd и должен выглядеть следующим образом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo off
SETLOCAL
set DOMAIN_NAME=ClassicDomain
set USERDOMAIN_HOME=C:oracleMiddlewareuser_projectsdomainsClassicDomain
set SERVER_NAME=AdminServer
set PRODUCTION_MODE=true
set MEM_ARGS=-Xms40m -Xmx250m
set JAVA_OPTIONS=-Dweblogic.Stdout="c:logsAdminOut.txt" -Dweblogic.Stderr="c:logsAdminErr.txt"
set WLS_USER=weblogic
set WLS_PW=oracle12
cd %USERDOMAIN_HOME%
call %USERDOMAIN_HOME%binsetDomainEnv.cmd
call "c:oracleMiddlewarewlserver_10.3serverbininstallAdminSvc.cmd"
ENDLOCAL
В этом скрипте устанавливается несколько переменных. 
DOMAIN_NAME – имя вашего WebLogic домена. По умолчанию ClassicDomain.
USERDOMAIN_HOME – полный путь к файлам WebLogic домена.
SERVER_NAME – Имя WebLogic сервера. В нашем случае – AdminServer.
PRODUCTION_MODE – Режим работы сервера. В нашем случае – эксплуатационный режим (true), может быть также девелоперский режим (false)
MEM_ARGS – Минимальное и максимальное значение выделяемой памяти для JVM
JAVA_OPTIONS – Java параметры, в нашем случае путь к файлам Stdout и Stderr или файлам выводимых сообщений Java и ошибок. Для нас очень важен файл Stdout, в который будут записываться все сообщения WebLogic сервера. Эти сообщения мы видим в консоли Windows в случае ручного запуска AdminServer-а.
WLS_USER и WLS_PW – Имя пользователя WebLogic и пароль соответственно. 
Затем в скрипте мы видим команды перехода в каталог домена WebLogic и запуск командного файла с переменными окружения. Затем уже запускается файл installAdminSvc.cmd, который и создает Windows сервис. 
После запуска installAdmin.cmd мы должны увидеть сообщение об успешно созданном сервисе Windows:
weblogic windows service
Открываем сервисы Windows и видим созданный нами сервис, который и запускаем. Через две минуты он будет в состоянии STARTED:
weblogic as windows service
Просматриваем файл c:AdminOut.txt в котором вы должны увидеть сообщения запуска AdminServer-а. Сообщение 

1
<17.12.2010 4:53:56 EET> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
говорит о его успешном запуске. Проверяем работоспособность нашего AdminServer-а в браузере:
Для удаления сервиса напишем скрипт с именем uninstallAdmin.cmd:

1
2
3
4
5
6
echo off
SETLOCAL
set DOMAIN_NAME=ClassicDomain
set SERVER_NAME=AdminServer
call "c:oracleMiddlewarewlserver_10.3serverbinuninstallSvc.cmd"
ENDLOCAL
При выполнении этого скрипта мы должны увидеть подобное сообщение:
remove weblogic windows service
Следующим шагом создаем скрипты для создания и удаления сервиса для Oracle Forms с именем installForms.cmd:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo off
SETLOCAL
set DOMAIN_NAME=ClassicDomain
set USERDOMAIN_HOME=C:oracleMiddlewareuser_projectsdomainsClassicDomain
set SERVER_NAME=WLS_FORMS
set ADMIN_URL=http://mobile:7001
set PRODUCTION_MODE=true
set MEM_ARGS=-Xms40m -Xmx250m
set JAVA_OPTIONS=-Dweblogic.Stdout="c:logsFormsOut.txt" -Dweblogic.Stderr="c:logsFormsErr.txt"
set WLS_USER=weblogic
set WLS_PW=oracle12
cd %USERDOMAIN_HOME%
call %USERDOMAIN_HOME%binsetDomainEnv.cmd
call "c:oracleMiddlewarewlserver_10.3serverbininstallDependSvc.cmd"
ENDLOCAL
После запуска скрипта и создания сервиса проверяем наличие зависимости сервиса от AdminServer-а в Windows SCM:
Если мы будем запускать сервис для Oracle Forms, то предварительно будет запускаться сервис для AdminServer-а, если он не был запущен ранее. Также и при запуске Windows сначала будет запускаться AdminServer, и только затем Oracle Forms.
Скрипт для удаления сервиса для Oracle Forms с именем uninstallForms.cmd:

1
2
3
4
5
6
echo off
SETLOCAL
set DOMAIN_NAME=ClassicDomain
set SERVER_NAME=WLS_FORMS
call "c:oracleMiddlewarewlserver_10.3serverbinuninstallSvc.cmd"
ENDLOCAL
Скрипт для создания сервиса для Oracle Reports с именем installReports.cmd:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo off
SETLOCAL
set DOMAIN_NAME=ClassicDomain
set USERDOMAIN_HOME=C:oracleMiddlewareuser_projectsdomainsClassicDomain
set SERVER_NAME=WLS_REPORTS
set ADMIN_URL=http://mobile:7001
set PRODUCTION_MODE=true
set MEM_ARGS=-Xms40m -Xmx250m
set JAVA_OPTIONS=-Dweblogic.Stdout="c:logsReportsOut.txt" -Dweblogic.Stderr="c:logsReportsErr.txt"
set WLS_USER=weblogic
set WLS_PW=oracle12
cd %USERDOMAIN_HOME%
call %USERDOMAIN_HOME%binsetDomainEnv.cmd
call "c:oracleMiddlewarewlserver_10.3serverbininstallDependSvc.cmd"
ENDLOCAL
Скрипт для удаления сервиса для Oracle Reports с именем uninstallReports.cmd:

1
2
3
4
5
6
echo off
SETLOCAL
set DOMAIN_NAME=ClassicDomain
set SERVER_NAME=WLS_REPORTS
call "c:oracleMiddlewarewlserver_10.3serverbinuninstallSvc.cmd"
ENDLOCAL
После запуска сервисов для Forms и Reports проверяем их логи и убеждаемся, что сервера нормально перешли в состояние RUNNING mode, затем проверяем их работоспособность, запустив ваше приложение.
В итоге мы должны получить три новых сервиса Windows, которые будут автоматически запускаться при запуске или перезагрузке операционной системы:
weblogic windows services
Напоследок указываем для каждого из сервисов имя пользователя Windows, от которого должны запускаться сервисы с необходимыми для их функционирования правами, если это необходимо.

2 thoughts on “Запуск Oracle WebLogic 11g Forms and Reports Services как сервис Windows

  1. Здравствуйте,

    очень помогла эта статья, спасибо. Но возникла проблема при попытке запустить скрипт, создающий сервис для Reports. Сообщение следующее:

    > Не удается найти файл “C:OracleMiddlewareFRMHomebin”;”C:OracleMIDDLE~1pat
    > ch_wls1036profilesdefaultnative.
    > Слишком длинная входная строка.
    > Ошибка в синтаксисе команды.

    Учитывая, что этот скрипт от создания сервиса Forms практически не отличается, то странно, что возникла такая проблема. Если можно, подскажите, где копать.

  2. Добрый день/

    При запуске скрипта для создания сервиса Reports возникает ошибка:

    Не удается найти файл “C:OracleMiddlewareFRMHomebin”;”C:OracleMIDDLE~1patch_wls1036profilesdefaultnative.
    Слишком длинная входная строка.
    Ошибка в синтаксисе команды.

    Подскажите где может быть проблема. Заранее спасибо.

Leave a Reply

Your email address will not be published. Required fields are marked *