PolyORB: настройка службы именования

Достаточно часто при создании распределённых приложений клиенту необходимо иметь возможность найти различные составляющие распределённой системы. В мире CORBA для этого обычно используется служба именования. PolyORB поставляет собственную реализацию службы именования в виде приложения po_cos_naming, но, как показывает практика, её настройка, равно как и настройка приложения на её использование не столь очевиды. Посему думаю будет полезно более детально рассмотреть этот вопрос.

Немного о настройке PolyORB

Прежде чем приступить к рассмотрению деталей, хочется осветить общую концепцию настройки PolyORB. Имеется три базовых пути настройки — использование файла конфигурации, переменных окружения и параметров командной строки.

Файл конфигурации являет из себя типичный INI файл, пример которого (полезный пример, в нём перечислены все возможные параметры) поставляется вместе с исходниками PolyOBR (см. src/polyorb.conf). Для того, что бы использующее PolyORB приложение загрузило параметры из этого файла достаточно что бы он находился либо в текущем каталоге при запуске приложения; либо путь к нему был указан в переменной окружения POLYORB_CONF.

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

Структура имён параметров командной строки аналогична переменным окружения; но все имена конвертируются в строчные буквы, в качестве префикса используется -polyorb, а в качестве разделителя — знак минус.

Например, интересующий нас параметр начальной ссылки на службу именования выглядит так в конфигурационном файле:

[corba]
name_service=<IOR: или corbaloc:>

так в переменной окружения:

POLYORB_CORBA_NAME_SERVICE=<IOR: или corbaloc:>

и так в виде параметра командной строки:

./my_application --polyorb-corba-name-service=<IOR: или corbaloc:>

Для самых продвинутых замечу, что как только Вам надоест объяснять пользователям своего приложения магию настройки с использованием конфигурационного файла и переменных окружения или Вам захочется хранить в одном файле настройки всех составляющих приложения, Вы можете расширить механизм настройки PolyORB за счёт реализации собственного источника параметров, см. пакет PolyORB.Parameters и его дочерние пакеты.

Фиксация адреса и порта сервера службы именования

По умолчанию сервер именования (po_cos_naming) использует адрес одного из найденных сетевых интерфейсов и произвольный свободный порт. На практике это не очень удобно из‐за необходимости перенастройки всех приложений при перезапуске сервера службы именования. Намного удобнее «выделить» некоторый порт или адрес/порт для постоянного использования сервером службы именования. Это можно сделать при его запуске с помощью параметров командной строки:

po_cos_naming --polyorb-iiop-polyorb-protocols-iiop-default_port=12345

или

po_cos_naming --polyorb-iiop-polyorb-protocols-iiop-default_port=12345 \
  --polyorb-iiop-polyorb-protocols-iiop-default_addr=127.0.0.1

После запуска po_cos_naming выдаст в стандартный поток вывода объектную ссылку службы именования в двух форматах (IOR и corbaloc), которую необходимо прописать в конфигурацию всех приложений. Благодаря выполненной нами настройке эта объектная ссылка не будет изменяться при перезапуске службы именования. Вы можете свободно использовать любой из форматор объектной ссылки; лично мне больше нравится corbaloc, посольку он короче и выглядит понятнее.

Настройка приложений

Итак, осталось настроить приложения. При использовании файла конфигурации в него необходимо добавить строки:

[corba]
name_service=corbaloc:iiop:[email protected]:11111/NameService/000000024fF0000000080000000

при использовании переменных окружения задать:

POLYORB_CORBA_NAME_SERVICE=corbaloc:iiop:[email protected]:11111/NameService/000000024fF0000000080000000
export POLYORB_CORBA_NAME_SERVICE

ну или передать в командной строке приложения:

./my_application --polyorb-corba-name_service=corbaloc:iiop:[email protected]:11111/NameService/000000024fF0000000080000000

На этом все настройки завершены и можно использовать службу именования, но об этом в другой раз.


Автор: Вадим Годунко
Дата: 03.11.2011