Проблемы с запуском C ++ CORBA Server в Ubuntu, CORBA :: SystemException

Я пытаюсь запустить пример CORBA в C ++ на Ubuntu 12.04:
http://www.yolinux.com/TUTORIALS/CORBA.html

и у меня все еще есть ошибка, когда я пытаюсь запустить:

    $ ./Server
'IOR:010000001600000049444c3a446174612f53657276696365413a312e3000000001000000000000006800000001010200100000003139322e3136382e3135392e31323900b1aa00000e000000fe4ba4015100001a19000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100'
Caught CORBA::SystemException.

перед запуском сервера я сгенерировал файл журнала:

omniNames -start 2812 -logdir ~/Desktop -errlog ~/Desktop/omniNamesError.txt

который дал мне файл ~ / Desktop / omniNamesError.txt, как показано ниже:

Thu Jan 24 22:54:34 2013:

Starting omniNames for the first time.
Wrote initial log file.
Read log file successfully.
Root context is IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000001010200100000003139322e3136382e3135392e31333000fd0a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c0000000100000001000100010000000100010509010100010000000901010003545441080000009aad015101004982
Checkpointing Phase 1: Prepare.
Checkpointing Phase 2: Commit.
Checkpointing completed.

Далее я добавил в файл:

/etc/omniORB.cfg

строка из сгенерированного файла:

InitRef = NameService=IOR:000100010000000100010509010100010000000901010003545\
441080000005ea5015101002002010000002b00000049444c3a6f6d672e6f72672f436f734e61\
6d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000\
001010200100000003139322e3136382e3135392e31333000fd0a00000b0000004e616d655365\
7276696365000300000000000000080000000100000000545441010000001c000000010000000\
1000100010000000100010509010100010000000901010003545441080000009aad0151010049\
82

Я также установил переменную среды:

$ export OMNIORB_CONFIG=/etc/omniORB.cfg

все как написано в учебнике, файлы скомпилированы (после 2 модификаций:
Я добавил: #включают на CRequestServiceA.cpp
и я изменился $ (CC) $ (CPPFLAGS) $ (ВКЛЮЧАЕТ) DataSK.cc в $ (CC) $ (CPPFLAGS) $ (ВКЛЮЧАЕТ) DataSK.cc && mv DataSK.o Data.o в MakeServer) но у меня все еще есть ошибка, как я сказал.

Пожалуйста, помогите мне с проблемой, я учился на многих уроках CORBA C ++ и никаких эффектов

1

Решение

Эти обратные слеши в вашем конфигурационном файле могут быть причиной проблемы. Чтобы избежать проблем с вставкой длинного IOR (который изменится) в ваш файл конфигурации, попробуйте установить InitRef как указано в файле конфигурации (при условии, что вы используете службу имен на той же машине, что и ваша тестовая программа).

InitRef = NameService=corbaname::localhost

Или вы можете попробовать вставить IOR в одну строку (не разбивайте строку и не добавляйте обратную косую черту).

Или вы можете запустить свой сервер так:

$ ./Server -ORBInitRef NameService=corbaname::localhost

Или же

$ ./Server -ORBInitRef NameService=IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e30000001000000000000007400000001010200100000003139322e3136382e3135392e31333000fd0a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c0000000100000001000100010000000100010509010100010000000901010003545441080000009aad015101004982

Если вы используете строку IOR, имейте в виду, что она почти наверняка изменится при каждом запуске службы имен, поэтому убедитесь, что вы используете самую последнюю.

Пожалуйста, смотрите документация omniORB для дополнительной информации.

Изменить после просмотра вашего комментария:

Учебник может быть старым и устаревшим. Попробуйте изменить эту строку:

CORBA::Object_var obj1=orb->resolve_initial_references("OmniNameService");

к этому

CORBA::Object_var obj1=orb->resolve_initial_references("NameService");

Вы также можете поработать над примером Echo в документация omniORB.

1

Другие решения

Я думаю, что я решаю это: я изменился OmniNameService в NameServiceи добавил в мой файл omniORB.cfg:

InitRef = NameService=IOR:00010....

(имя IOR пришло из omniNamesError.txt), затем запустите сервер следующим образом:

./Server corbaloc:rir:/NameService
-1