UniSet 2.32.1
Конфигурирование системы

Общее описание

Для конфигурирования системы используется файл (обычно "configure.xml"). Конфигурация является глобальным объектом. Для получения доступа к ней используется функция auto conf = uniset_conf(); До начала работы, обычно в функции main(), конфигурация должна быть инициализирована при помощи функции uniset_init(). При этом третий параметр, указывающий название конфигурационного файла, является не обязательным. По умолчанию обрабатывается аргумент командной строки –confile filename.

...
#include <Configuration.h>
using namespace UniSetTypes;
int main(int argc, char **argv)
{
try
{
uniset_init(argc, argv, "configure.xml");
...
...
}
catch(Exception& ex )
{
cerr << "(main): Поймали исключение " << ex << endl;
}
catch(...)
{
cerr << "Неизвестное исключение!!!!"<< endl;
}
...
}

Конфигурирование OmniORB

Для возможности задать напрямую параметры для omniORB заложена специальная секция <omniORB>.

В данную секцию можно записывать любые параметры поддерживаемые библиотекой omniORB. Формат и название параметров см. документацию по omniORB.

Пример:

<omniORB>
<option name="endPoint" arg="giop:tcp:host1:"/>
<option name="endPoint" arg="giop:tcp:host2:" error_if_not_available="1"/>
</omniORB>

Для параметра 'endPoint' встроена дополнительная проверка доступности указанного адреса.

Предупреждения
По умолчанию недоступность игнорируется, если не указан параметр error_if_not_available="1"

Помимо этого можно задать параметр ignore_checking="1", чтобы не происходило проверки доступности endPoint.

Сервис имён

Сервис имён предназначен для получения ссылок на объекты (для возможности удалённого вызова) по имени объекта. В данном проекте используется реализация службы имён входящая в состав библиотеки omniORB. Сервис поставляется отдельной утилитой под названием omniNames, которая запускается отдельно. В файле настроек проекта необходимо указать адрес сервиса

<UniSet>
...
<NameService host="localhost" port="2809"/>
</UniSet>

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

Режим работы без сервиса имён

Режим работы без сервиса имён включается в настройках

<UniSet>
...
<LocalIOR name="1"/>
<LockDir name="/var/lock/projectname/"/>
...
</<UniSet>

или при запуске, при помощи аргумента командной строки --localIOR 1

Данный режим предназначен для работы без использования сервиса имён (omniNames). При этом IOR-ссылки на объекты и датчики публикуются локально в файлах, в каталоге LockDir. Такой режим значительно ускоряет запуск приложений, т.к. регистрация большого количества датчиков в сервисе имён занимает много времени. Но по умолчанию в данном режиме работы недоступны удалённые вызовы на другие узлы. Т.е. например такой вызов работать не будет

uniset2-admin --confile xxx --getValue sensor1@node2

Для того чтобы удалённые вызовы были доступны, необходимо на каждом узле запустить специальный сервис HttpResolver (см. Http-cервис для получения CORBA-ссылок на объекты (HttpResolver)).