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 На этом все настройки завершены и можно использовать службу именования, но об этом в другой раз. Автор: Вадим Годунко |