2013-05-03 1 views
-1

Я пытаюсь запустить форму волны с компонентами, работающими на разных машинах. То есть, я хочу A-> B, где компонент A запускается на GPP на машине 1, а компонент B работает на GPP на машине 2. Сервер имен CORBA в системе A отображается в REDHAWK в системе B, но я не могу получить доступ к удаленным устройствам или компонентов, когда я запускаю сигнал. Как я могу сделать устройства на одной машине доступными для REDHAWK на другой?Как вы подключаете устройства REDHAWK на разных машинах?

Thanx для вашей помощи!

-jerhill

ответ

1

Существенная вещь для распространения компонентов Redhawk и устройств на нескольких машинах убедитесь, что ваш CORBA связи корректно работает между машинами. Обычно это соответствует правильной настройке /etc/omniORB.cfg. Во-первых, на одной машине у вас должны быть запущены omniNames и omniEvents и настройте свой конфиг на section 2.6 of the documentation. Для справки:

InitRef = NameService=corbaname::127.0.0.1 
InitRef = EventService=corbaloc::127.0.0.1:11169/omniEvents 

На второй машине ваш InitRef должен указывать на первую машину. Если первая машина была 192.168.1.100, то конфигурация вашей второй машины может содержать:

InitRef = NameService=corbaname::192.168.1.100 
InitRef = EventService=corbaloc::192.168.1.100:11169/omniEvents 

Вы должны быть в состоянии проверить это работает правильно на второй машине с:

$ nameclt list 

Следующий выпуск вам необходимо решить, что объекты CORBA прослушиваются на соответствующих сетевых интерфейсах и публикуют информацию в своих IOR, что позволяет им достичь. В каждом из ваших конфигурационных файлов я рекомендую вам добавить строку, чтобы сообщить omniORB, какие объекты конечной точки CORBA, созданные на этой машине, должны прослушиваться. Например, на вашей первой машине:

endPoint = giop:tcp:192.168.1.100: 
endPoint = giop:unix: 

Это говорит OmniORB, что объекты CORBA должен прослушивать TCP порт по своему выбору на 192.168.1.100. Он также добавляет Unix-канал для быстрого доступа объектами на одном компьютере. omniORB опубликует эту информацию в IOR для этого объекта. То, что вы выбираете здесь, важно: если вы используете IP-адрес, недоступный другим машинам, или используйте имя хоста, которое другие машины не могут решить, соединение CORBA завершится с ошибкой.

После того, как вы настроили параметр endPoint на обеих машинах, вам может быть полезно проверить информацию, содержащуюся в ваших IOR. Если вы можете получить доступ к службе именования, вы можете получить IOR для своих объектов. Например, если вы домен с именем работает 'REDHAWK_DEV', вы можете получить IOR менеджера домена через:

$ nameclt resolve REDHAWK_DEV/REDHAWK_DEV 

Затем кормить IOR в catior:

$ catior IOR:... 

catior будет декодировать ИОЗ для вас и покажите вам, к какому адресу и порту подключается клиент.

+0

Bingo! Это делает трюк. Однако я не могу найти командную команду. – jerhill

+0

Катиор содержится в пакете omniORB-utils. Для серии REDHAWK 1.8, где omniORB распространяется вместе с REDHAWK, исполняемый файл называется catior.omni. –

0

Основываясь на том факте, что программы на B могут видеть службу имен в A, я предполагаю, что проблема связана с конфигурацией Device/Device Manager.

Убедитесь, что диспетчер устройств на B отвечает этим критериям:

  • атрибут Идентификатор deviceconfiguration элемента DCD.XML-файл является уникальным
  • атрибут Идентификатор componentinstantiation элемента УКПГ на файле dcd.xml является уникальным
  • атрибут имя namingservice элемента на файле dcd.xml является домен вы пытаетесь подключиться (из форма DomainName/DomainName)
  • вы не имеете менеджера домена, работающие на B, который имеет сталкивающихся имя с менеджером домена на а (ошибка должна произойти, если вы сделаете это)

Если эти критерии и ваша система все еще не работает, отправьте stdout из запущенного nodeBooter из командной строки для диспетчера устройств, который не зарегистрирован g и Диспетчер доменов, с которым вы пытаетесь зарегистрироваться.

Смежные вопросы