OPENEDGE APPLICATION SERVER

Сервер приложений OpenEdge Application Server позволяет осуществлять внешним системам удаленный вызов процедур ABL(4GL).

AppServer

Все настройки OpenEdge Application Server'а указываются в файле $DLC/properties/ubroker.proprties. Данный файл обладает разветвленной вложенной структурой от секций с общими настройками к частным. 

Редактирование данного файла конфигурации возможно с помощью:

  • текстового редактора;
  • утилиты Mergeprop;
  • Progress Explorer;
  • OpenEdge Explorer;

После внесения изменений в файле конфигурации рекомендуется проверить их корректность с помощью утилит:

  • nsconfig - утилита проверки корректности настроек NameServer'а;
  • asconfig - утилита проверки корректности настроек App-брокеров;
  • wsconfig - утилита проверки корректности настроек WebSpeed брокеров. 

Данная команда выведет информацию из конфигурационного файла $DLC/properties/ubroker.proprties по NameServer - NS1

$DLC/bin/nsconfig -i NS1

Данная команда выведет информацию из конфигурационного файла $DLC/properties/ubroker.proprties по брокеру - myBroker1

$DLC/bin/asconfig -i myBroker1


ADMIN SERVER


Запуск AdminServer'а осуществляется командой:

$DLC/bin/proadsv -start

По умолчанию AdminServer запускается на порту 20931. Изменить порт можно указав параметр -port.

$DLC/bin/proadsv - port 29032  -start

Остановить AdminServer:

$DLC/bin/proadsv -stop

Проверить состояние AdminServer'а:

$DLC/bin/proadsv -q

Если сервер запущен успешно, результат будет примерно следующий:

OpenEdge Release 10.1C as of Sat Feb  9 14:15:49 EST 2008
AdminServer is alive. (8545)

Если сервер не запущен:

OpenEdge Release 10.1C as of Sat Feb  9 14:15:49 EST 2008
AdminServer not alive. (8543)

 
NAME SERVER


NameServer управляет зарегистрированными в нем брокерами. Клиентские запросы поступают на NameServer с указанием идентификатора брокера, которому предназначается запрос. Таким образом, клиенту нет необходимости знать адрес и порт каждого брокера, достаточно только знать адрес и порт NameServer и идентификаторы брокеров зарегистрированных в нем.

Команда запуска NameServer'a:

$DLC/bin/nsman -i NS1 -start

Команда остановки NameServer'a:

$DLC/bin/nsman -i NS1 -stop

Просмотр состояния NameServer'a:

$DLC/bin/nsman -i NS1 -q

В случае успешного запуска NameServer'а  и зарегистрированных на нем брокеров:

Connecting to Progress AdminServer using rmi://localhost:20931/Chimera (8280)
Searching for NS1 (8288)
Connecting to NS1 (8276)

NameServer NS1 running on Host alex-1001PXD Port 5162 Timeout 30 seconds.
Application Service  UUID   Name   Host   Port   Weight   Timeout

AS.myBroker1
    0edb686771d689df:-6c41a6bc:13e092e18ae:-8000 AS.myBroker1
alex-1001PXD/192.168.0.52     3001    0    30


AS.[Default]
    0edb686771d689df:-6c41a6bc:13e092e18ae:-8000 AS.myBroker1
alex-1001PXD/192.168.0.52     3001    0    30

Если NameServer запущен, но не запущен ни один из брокеров зарегистрированных на нем:

Connecting to Progress AdminServer using rmi://localhost:20931/Chimera (8280)
Searching for NS1 (8288)
Connecting to NS1  (8276)

NameServer NS1 running on Host alex-1001PXD Port 5162 Timeout 30 seconds.
There are no registered Application Services for this NameServer

Секция [NameServer] содержит общие настройки для всех NameServer'ов. Каждый параметр может быть переопределен в настройках каждого отдельного сервера.

После секции [NameServer] создадим секцию сервера NS1:

[NameServer.NS1]
    autoStart=1
    environment=NS1
portNumber=5162
    srvrLogFile=$WRKDIR/NS1.ns.log

autoStart - определяет автоматический запуск NameServer'а при запуске AdminServer. Может принимать следующие значение: 1 - осуществляется автоматический запуск NameServer'a и 0 - автоматический запуск не производится;

srvrLogFile - лог файл NameServer'а;

portNumber - порт NameServer. Порт для подключения клиентов к AppServer (по умолчание порт 5162).

NameServer представляет собой java процесс слушающий UDP порт на который поступают клиентские запросы. Просмотреть информацию по данном процессу можно например с помощью утилиты lsof:

root@alex-1001PXD:/home/alex# lsof -i :5162
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    3109 root   23u  IPv6 23410   0t0  UDP *:5162


BROKER


Брокер управляет агентами выполняющими клиентские запросы. Секция [UBroker] конфигурационного файла содержит общие настройки для всех видов брокеров. Каждый брокер может быть зарегистрирован только на одном NameServer'е. Секция [UBroker.AS] - содержит общие настройки для всех App-брокеров.

Команда запуска Broker'a:

$DLC/bin/asbman -i myBroker1 -start

Команда остановки Broker'a:

$DLC/bin/asbman -i myBroker1 -stop

Просмотр состояния Broker'a:

$DLC/bin/asbman -i myBroker1 -q

В случае успешного запуска Broker'а:

Connecting to Progress AdminServer using rmi://localhost:20931/Chimera (8280)
Searching for myBroker1 (8288)
Connecting to myBroker1  (8276)

Broker Name                    : myBroker1
Operating Mode                 : Stateless
Broker Status                  : ACTIVE
Broker Port                    : 4070
Broker PID                     : 4245
Active Servers                 : 3
Busy Servers                   : 0
Locked Servers                 : 0
Available Servers              : 3
Active Clients (now, peak)     : (0, 0)
Client Queue Depth (cur, max)  : (0, 0)
Total Requests                 : 0
Rq Wait (max, avg)             : (0 ms, 0 ms)
Rq Duration (max, avg)         : (0 ms, 0 ms)

PID   State     Port  nRq    nRcvd  nSent  Started          Last Change      
04277 AVAILABLE 02002 000000 000000 000000 31.08.2013 23:36 31.08.2013 23:36
04288 AVAILABLE 02004 000000 000000 000000 31.08.2013 23:36 31.08.2013 23:36
04315 AVAILABLE 02005 000000 000000 000000 31.08.2013 23:36 31.08.2013 23:36

Если Broker не запущен:

Connecting to Progress AdminServer using rmi://localhost:20931/Chimera (8280)
Searching for myBroker1 (8288)
Connecting to myBroker1 (8276)
Broker: bisBroker1 not running (8313)


После секции [UBroker.AS] создадим секцию с настройками myBroker1.

[UBroker.AS.myBroker1]
    uuid=0edb686771d689df:-6c41a6bc:13e092e18ae:-8000
    srvrLogFile=$WRKDIR/myBroker1.server.log
    brokerLogFile=$WRKDIR/myBroker1.broker.log
    brkrLoggingLevel=3
controllingNameServer=NS1
operatingMode=State-free

    appserviceNameList=myBroker1
   environment=myBroker1
    defaultService=0
    portNumber=3001
    initialSrvrInstance=3
    maxClientInstance=15
    userName=

    password=
    description=A sample AppServer setup for State-free

uuid - ID брокера;

Каждый брокер должен иметь уникальный uuid, для генерации которого необходимо выполнить команду:

$DLC/bin/genuuid

autoStart - определяет автоматический запуск брокера при запуске AdminServer. Может принимать следующие значение: 1 - осуществляется автоматический запуск Broker'a и 0 - автоматический запуск не производится.

srvrLogFile - лог-файл сервера;

brokerLogFile - лог-файл брокера;

brkrLoggingLevel - уровень логирования брокера; 0 - логирование не производится; 1 - логируются только ошибки; 2 - основной;

brkrLogAppend - может принимать значение 0 и 1: 0 - при каждом запуске брокера создается отдельный лог-фаил; 1 - логирование производит в единый лог-файл;

brkrLogThreshold - максимальный размер лог-файла в байтах. Может принимать значение от 500000 - 2147483647. При достижении лог-файла указанного размера создается новый лог-файл с индексом от 1 до 999 999.

controllingNameServer - идентификатор NameServer;

operatingMode - режим работы брокера.

Существует 4-е режима работы брокера: Stateless, State-reset, State-aware, State-free.

State-reset- Каждому подключившемуся клиенту выделяется свой отдельный агент брокера из числа доступных. При этом агент блокируется данным клиентом для запросов других клиентских соединений  до момента отключения клиента. После отключения клиента, контекст агента сбрасывается. С одной стороны клиенту всегда однозначно доступен агент для обработки его запросов, с другой стороны, если от клиента не поступает никаких запросов, агент остается заблокированным и возможна такая ситуация, когда все доступные агенты будут заняты и новые клиенты не смогут получить к ним доступ, хотя при этом заблокированные клиенты по факту будут свободными и не будут обрабатывать никаких запросов клиентов заблокировавших их. данный режим является режимом используемым по умолчанию.

State-aware - Данный режим является схожим с режимом state-reset, но в отличие от него агентский контекст не сбрасывается после отключения клиента и остается доступен следующему подключившемуся клиенту.

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

State-free - Подключившийся клиент не устанавливает жесткую связь с конкретным брокером. Клиентские запросы исполняются первым свободным брокером. По выполнению запроса состояние агента сбрасывается.

appserviceNameList - список поддерживаемых брокером серверов;

environment - секция с описанием переменных окружения брокера;

portNumber - порт брокера;

maxClientInstance - Максимальное кол-во клиентских соединений;

initialSrvrInstance - кол-во агентов запускаемых при старте брокера;

minSrvrInstance - минимальное число подключенных агентов;

maxSrvrInstance - максимально кол-во запускаемых агентов;

srvrMinPort - минимальный порт агентов. допустимое значение 1024 - 65535;

srvrMaxPort - максимальный порт агентов. допустимое значение 1024 - 65535;

autoTrimTimeout - таймаут отключения незанятого брокера в секундах. При значении 0 отключение незанятого агента не производиться.

При запуске брокера к базе подключается initialSrvrInstance агентов, число которых по мере увеличения параллельных запросов клиентов может увеличиваться до числа maxSrvrInstance. Агенты запускаются на портах с srvrMinPort по srvrMaxPort с шагом 1. При указании maxSrvrInstance необходимо руководствоваться следующим: maxSrvrInstance ? srvrMaxPort - srvrMinPort.

По мере прекращений запросов невостребованные агенты будут отключаться по истечению  таймаута autoTrimTimeout. При полном прекращении запросов к OpenEdge Application Server, число подключенных агентов сократиться до minSrvrInstance.

requestTimeout - таймаут выраженный в секундах, который будет выдержан в ожидании свободного агента при клиентском запросе. Если по истечении указанного времени не буден доступен агент клиентом будет получено сообщение "no servers available"

srvrStartupParam - параметры подключения агентов к базе или pf-файл параметров;

PROPATH - перечень каталогов содержащих r-файлы;

userName - имя пользователя от имени которого осуществляется запуск брокера. Если пользователь не указан, то по умолчанию запуск брокера будет осуществляться от имени того же пользователя, от которого осуществляется запуск AdminServer;

password - пароль пользователя указанного в параметре userName;

description - описание брокера.


При настройке OpenEdge Application Server'а возможно указание ряда процедур, вызов которых будет осуществлен по наступлению определенного события.

Такими событиями являются:

  • Запуск и остановка агентов;
  • Подключение и отключение клиента;
  • Вызов удаленной процедуры клиентом и завершение выполнения удаленной процедуры.


STARTUP ПРОЦЕДУРА


Имя STARTUP процедуры, вызываемой сразу после старта агента указывается в параметре srvrStartupProc. Вызов процедуры осуществляется как PERSISTENT и удаляется до того как агент будет остановлен.   

Данная процедура обязательно должна содержать описание одно входного параметр CHARACTER типа.

DEF INPUT PARAMETER startupData AS CHAR NO-UNDO.

При вызове процедуры значение входного параметра процедуры передается из параметра srvrStartupProcParam. Если значение srvrStartupProcParam не указано, то оно автоматические принимает "неизвестное значение" - ?.

Если при вызове процедуры возникла ошибка, то запуск App-сервера прекращается и агенты останавливаются.

Невозможно указание STARTUP процедуры для state-reset режима работы App-сервера.


SHUTDOWN ПРОЦЕДУРА


Имя SHUTDOWN процедуры, вызываемой до остановки агентов, указывается в параметре srvrShutdownProc. Данная процедура является процедурой без параметров. Если при вызове данной процедуры произойдет ошибка, то она просто игнорируется и агент останавливается. Вызов данной процедуры осуществляется как NON-PERSISTENT.

Невозможно указание SHUTDOWN процедуры для state-reset режима работы OpenEdge Application Server.


CONNECT ПРОЦЕДУРА


Вызов CONNECT процедуры осуществляется в момент установки клиентского соединения с OpenEdge Application Server, до момента принятия клиентского запроса. Данная процедура может осуществлять аунтификацию клиента подключаемого к App Server, в случае не прохождения аутентификации отклонить подключение данного клиента.

Имя CONNECT процедуры указывается в параметре srvrConnectProc файла конфигурации App-сервера

CONNECT процедура должна содержать три входных параметра CHARACTER типа:

DEF INPUT PARAMETER userId     AS CHAR NO-UNDO.  /* имя пользователя  */
DEF INPUT PARAMETER password   AS CHAR NO-UNDO.  /* пароль            */
DEF INPUT PARAMETER serverInfo AS CHAR NO-UNDO.  /* прочая информация */

Значение данных параметров передаются клиентом в методе CONNECT() при подключении к App Server'у. Если данные значения не указаны клиентом в методе CONNECT() то процедуре будут переданы "неизвестные значения" - ?.

Невозможно указание CONNECT процедуры для state-reset режима работы App Server'а, так как в данном режиме не прои.

При stateless режиме работы AppServer'а вызов CONNECT процедуры осуществляется как NON-PERSISTENT. Для всех остальных режимов работы AppServer'а как PERSISTENT.     


DISCONNECT ПРОЦЕДУРА


Вызов DISCONNECT процедуры осуществляется в момент получения запроса клиента на отключение, но до фактического его отключения.

Имя CONNECT процедуры указывается в параметре srvrDisconnProc файла конфигурации App Server.

Невозможно указание DISCONNECT процедуры для state-reset режима работы App Server'а.

Вызов процедуры осуществляется как NON-PERSISTENT для всех доступных режимов работы App-сервера


БЕЗОПАСНОСТЬ


Для ограничения доступных для удаленного вызова процедур через OpenEdge Application Server используется метод сессии - EXPORT(). Данный метод устанавливает список доступных для вызова процедур в качестве контента агентов App Server'а. В качестве параметра данного метода передается список процедур в формате CAN-DO доступных для удаленного вызова. Вызов данного метода без параметра отчищает список доступных процедур.

Специфика установки списка доступных процедур для различных режимов работы OpenEdge Application Server:

  • state-reset - Установка списка доступных процедур возможно в CONNECT процедуре, где так же возможно определение данного списка в зависимости от подключаемого клиента. После отключения клиента данный список будет автоматически сброшен, так как будет сброшен контент агента.
  • state-aware - Список доступных процедур может быть установлен единым для всех агентов брокеров в STARTUP процедуре, так как после отключения клиента, в отличии от state-reset режима, автоматического сброса данного списка не производится и он продолжает действовать для последующих подключений клиентов. Если же требуется установка персональных списков доступных процедур для подключаемых клиентов в CONNECT процедуре, то при каждом отключении клиента данный список должен быть сброшен в DISCONNECT процедуре.
  • stateless - Наиболее удачным способом установки списка доступных процедур при данном режиме работы AppServer'а является объявление его в STARTUP процедуре.
  • state-free - В силу того, что вызов CONNECT процедуры в данном режиме не осуществляется, установка списка доступных процедур в ней не представляется возможной. Установка единого общего списка доступных процедур для всех агентов брокеров возможна в STARTUP процедуре.

 

Вы здесь: Главная Основы ABL СЕТЕВОЕ ВЗАИМОДЕЙСТВИЕ OPENEDGE APPLICATION SERVER - УДАЛЕННЫЙ ВЫЗОВ ПРОЦЕДУР