Форум: "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