Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Разные обьектные ссылки 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 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
14-1091553860
DDA
2004-08-03 21:24
2004.08.22
jmp +$06


1-1091818035
Alex870
2004-08-06 22:47
2004.08.22
TreeView и ImageList


1-1092128947
iPod
2004-08-10 13:09
2004.08.22
ThreadSafe доступ к переменным


14-1091675721
ORMADA
2004-08-05 07:15
2004.08.22
Версионность


9-1083916238
Маг Гыр
2004-05-07 11:50
2004.08.22
Видеопамять