| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 теги для всех используемых бинов. Просто копируем их в свой дескриптор (или переписываем свой новым). Все. Почему это не делается автоматически при деплое админкой - для меня загадка. Возможно, я изначально что-то делал не так. Если у кого-то есть идеи, буду благодарен за их озвучивание. |