|
Модераторы: MetalFan |
|
AnTeml |
|
||||||||||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 19.3.2009 Репутация: нет Всего: нет |
Здравствуйте.
сервер на JAVA (WebLogic 10.3.6) пишу клиента на Embarcadero XE5 Столкнулся со следующей проблемой. Серверная логика запрограммирована с мыслью о полиморфизме, то есть процедура объявлена как принимающая абстрактный объект-прародитель, а передают в неё конкретные объекты и внутри процедуры, в зависимости от типа переданной переменной, с нею совершаются определённые действия На практике при передаче объекта-наследника на сервер приходит в реальности объект-прародитель На всякий случай, попробую привести пример: Имеется структура классов, унаследованная, пусть для определённости от TAbstractObject и у сервера есть процедура RegisteredAnyObject, принимающая на вход объект любого типа Родительский класс:
объявление серверной процедуры:
Пример использования
При таком использовании на сервере в процедуру RegisteredAnyObject приходит объект типа TAbstractObject, соответственно, помимо потери информации о типе при передаче потеряны и поля NewField1, NewField2 Но это ещё не всё. Если один из объектов имеет в качестве поля другой объект и ему вместо в это поле подсовывается предок объявленного объекта - на сервере в этом поле точно так же приходит экземпляр не присвоенного присвоенный полю объекта, а его родителя то есть, на примерах в продолжении предыдущего примера, составной объект:
сервис
использование:
Результат: на сервер приходит объект типа TComplexObject, в поле obj которого содержится переменная типа TAbstractObject Для тестирования сервера приложений был написан клиент на Java, содержащий пакет тестов сервисов. Всё превосходно передавалось и принималось. Когда начали разработку рабочего клиента на Embarcadero (с использованием HTTPRIO) - получилась такая засада. Предполагаю, что не указаны какие-то настройки формирования XML-пакета, так же предполагаю, что поддержка полиморфизма - базовый функционал и ну не может быть такого, чтобы в HTTPRIO это не было реализовано. Но куда копать? Это сообщение отредактировал(а) AnTeml - 23.10.2014, 11:40 |
||||||||||||
|
|||||||||||||
drkot |
|
|||
Ищущий Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
извините, но для начала в ДНК... Судя по тексту Вы не имеете представления об Object Pascal как языке и средствах отладки предоставляемых средой разработки.
Какой тип объекта вы ожидаете при входе в процедуру? -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |