Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Axis 1.4 beanMapping


Автор: Souljah 27.11.2007, 13:12
Всем привет!

Бразас, нужен совет.
Пишу вебсервис с использованием axis.
Сгенерировал по wsdl клиентскую часть, дергаю вызов - получаю сообщение о невозможности десеарилизовать тип на сервере.
Ну это понятно, для каждого использумого javabean следует прописать прописать секцию <beanMapping... /> в wsdd. Все бы ничего, но сервис обменивается с клиентами сложными иерархиями с кучей объектов, и вбивать ручками для каждого типа beanMapping-маркер совсем не улыбается. 
Нет какого-нть способа автоматизировать этот процесс? 

Спасибо.

Автор: Foo 27.11.2007, 14:06
использовать Axis2, там wsdl генерируется автоматически. 

Цитата

но сервис обменивается с клиентами сложными иерархиями с кучей объектов


Тогда, думаю генерация wsdl это самая простая проблема с которой придет столкнуться во время использования Axis.

Автор: Souljah 27.11.2007, 14:19
Генерация wsdl вообще не проблема, так как выполняется аксисом автоматически для любого задеплоенного сервиса. 
Тут как раз все устривает, и сгенерированная по wsdl иерархия соответствует серверной.
Больше интересует что делать с маппингом типов. 
Есть, конечно, решение вроде просканить скриптом папку с data transfer классами, или, к примеру, написать xslt, который будет сканить иходный xsd, из которого эти типы генерируются... Но вроде таск распространенный, интересно, кто как забарывает.

Автор: Foo 27.11.2007, 14:35
Так а ненужно никакого мапинга типов в Axis2, главное чтобы в передаваемых классах были только примитивные типы (чтобы небыло List Set например, т.к. их не передаш через SOAP), и ещё желательно чтобы передаваемые обьекты были POJO  иначе могут возникнуть проблемы, даже скорее всего возникнут, при передаче по вебсервисам.

Автор: Souljah 27.11.2007, 14:42
Спасибо, не думаю, что сейчас получится переползти на axis2, но на будущее буду знать.

Автор: Souljah 10.12.2007, 20:26
Расскажу, как заборол:

Деплоим сервис как обычно через админку, забиваем на всякие бинмаппинги. Поднимаем сервер, идем на страницу с wsdl. 
Генерируем по этому wsdl классы клиента с флагом serverside="true" (я использовал ant). После этого в пакете со сгенерированными заглушками для сервиса появится deploy.wsdd с полным описанием вашего сервиса, и в нем уже будут прописаны typeMappings теги для всех используемых бинов. Просто копируем их в свой дескриптор (или переписываем свой новым). Все.
Почему это не делается автоматически при деплое админкой - для меня загадка. Возможно, я изначально что-то делал не так. Если у кого-то есть идеи, буду благодарен за их озвучивание.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)