Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

Разные обьектные ссылки C++ и Java.   Найти похожие ветки 

 
nikols ©   (2002-06-28 09:08) [0]

До настоящего момента использовали для написания серверов C++Builder, решили переписать некоторые сервера на JBuilder. Используется передача обьектной ссылки между серверами в строковом виде. Выяснилось, что ссылки имеют разный формат.

D:\>printior cpp.ior
Interoperable Object Reference:
 Type ID: IDL:modDataServer/IDataServer:1.0
 Contains 2 profiles.
 Profile 0-LIOP Profile:
   version: 1.2
   host: vasja
   pid: 1196
   unique_id: 0
   Object Key: ServiceId[service=/IDataServer_poa,id={6 bytes: [S][A][S][H][A][
1]}]
 Profile 1-IIOP Profile:
   version: 1.2
   host: 169.135.227.111
   port: 1280
   Object Key: ServiceId[service=/IDataServer_poa,id={6 bytes: [S][A][S][H][A][
1]}]


D:\>printior java.ior
Interoperable Object Reference:
 Type ID: *
 Contains 2 profiles.
 Profile 0-LIOP Profile:
   version: 1.2
   host: vasja
   pid: 1196
   unique_id: 0
   Object Key: ServiceId[service=/IDataServer_poa,id={}]
 Profile 1-IIOP Profile:
   version: 1.2
   host: 169.135.227.111
   port: 1280
   Object Key: ServiceId[service=/IDataServer_poa,id={6 bytes: [S][A][S][H][A][
1]}]


Получение ссылки:
С++:
       PortableServer::ObjectId_var managerId =
           PortableServer::string_to_ObjectId(parNameSession.c_str());
      FIDataServer = modDataServer::IDataServer::_bind(
          "/IDataServer_poa", managerId);

Java:
    theFIDataServer =
     modDataServer.IDataServerHelper.bind(orb, "/IDataServer_poa", parNameSession.getBytes());


Преобразование в строку:
С++:
       CORBA::String_var strFIDataServer = orb->object_to_string(FIDataServer);CODE>
Java:
    String strFIDataServer =  orb.object_to_string(theFIDataServer);


Не подскажете, в чем дело и как их привести к одинаковому виду?


 
epflorov ©   (2002-08-29 23:31) [1]

Здравствуйте.
В спецификации CORBA
"4 ORB Interface
4.2.2.2 string_to_object
...
Для гарантии, что ORB поймет строковую форму объектной ссылки, операция object_to_string этого ORB"а должна быть использована для получения строки. Для всех совместимых ORB"ов, если obj допустимая ссылка на объект, то string_to_object(object_to_string(obj)) вернет правильную ссылку на тот же объект, если две операции выполнены у одного и того же ORB"а.
Для всех совместимых ORB"ов, это остается истинным, даже если две операции выполнены у различных ORB"ах."

Как это понимать? Черт его знает. Почему-то у меня этот абзац вызывает чувство внутреннего противоречия.
Ясно одно - со строковым представлением чего-то не то...


 
Аристархов Андрей   (2002-09-10 12:37) [2]

Если внимательно посмотреть на то, что выдает printior, то можно заметить, что ссылки различаются в части LIOP (Local Profile), т.е. ссылки, которая используется для взаимодействия объектов в рамках одного адресного пространства. Поэтому никакого воздействия это различие на межпроцессное взаимодействие не несет.

В принципе и в спецификации все понятно (если читать в оригинале). Евгений, не обижайся, но при переводе надо переводить фразы/предложения а не отдельные слова. Поскольку построение предложения в английском языке и в русском отличается (причем, существенно), то перевод с английского на русский без перестроения предложения может вызвать много неясностей.
Я бы приведенный тобой абац перевел таким образом.
...
Для гарантии того, что ORB поймет строковое представление объектной ссылки, для создания строки должна быть использована операция object_to_string этого же ORB"а. Для всех ORB"ов, соответствующих стандарту истинно следующее утверждение: если obj является действительной объектной ссылкой, то string_to_object(object_to_string(obj)) вернет действительную объектную ссылку на тот же объект, если две вышеописанные операции выполнены в рамках одного и того же ORB. Для всех ORB"ов, соответствующих стандарту и поддерживающих IOP (Inter-ORB protocol) приведенное выше утверждение верно даже в том случае, если операции выполнены в рамках различных ORB"ов.
...


 
epflorov ©   (2002-09-10 19:17) [3]

Все замечания приняты. Работаю над этим в поте лица :).
Может кто хочет поучаствовать в моей инициативе http://corbaejb.mastak.ru/translate/index.htm ? :)



Страницы: 1 вся ветка

Форум: "Corba";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.036 c
6-1087908074
Said
2004-06-22 16:41
2004.08.22
MAC адрес


3-1091188056
*boba*
2004-07-30 15:47
2004.08.22
Oкругление


4-1089353018
Misha Holyava
2004-07-09 10:03
2004.08.22
Перехват печати


14-1091785039
Cerberus
2004-08-06 13:37
2004.08.22
Текстовые фаилы


3-1090602268
Yaral
2004-07-23 21:04
2004.08.22
*.doc в blob





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский