![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Tsahes |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
Добрый день.
Axis2 предоставляет автоматически сгенерированный wsdl для своих веб-сервисов, доступный по url сервис?wsdl. Я хотел бы внести некоторые изменения в этот файл: использовать schema для объктов запроса и ответа, добавить fault messages и т.д. А есть ли возможность указать Axis2, чтобы он использовал мой wsdl и отображал именно его при обращении по url? Или принято пользоваться автоматически сгенерированным? |
|||
|
||||
| Foo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 20.10.2006 Репутация: 1 Всего: 3 |
Мне тоже это было нужно, я не нашол как в Axis 2 сделать это, но я нашол друйгой способ решения проблемы. Впринципе то что он генерит не требует изменений/доработок, опиши конкретнее проблему, может можно обойтись без своего wsdl?
--------------------
qip |
|||
|
||||
| Tsahes |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 5.12.2006 Репутация: нет Всего: нет |
Суть вот в чем.
Я создал POJO-объект запроса с несколькими полями, реализацию сервиса, задеплоил. Axis2 генерирует в wsdl-файле описание объекта запроса в очень простом виде, например:
Это не дает никакого представления действительной схеме сообщения CustomerInfoReq, в которой бы я указал обязательность/необязательность полей, например. Я хотел бы руками построить wsdl и как-то заставить Axis2 отобразить именно его. Кроме того, я хотел бы определить необходимые мне faul messages, с генерацией которых, как мне кажется, у axis трудности. |
|||
|
||||
| Foo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 20.10.2006 Репутация: 1 Всего: 3 |
Дело в том, что аксис не очень продуман, и если ты хочеш указать обязательность/необязательность полей, то это врядли у тебя получится, хотя они моглибы предусмотреть например анотации для этого дела. Также через аксис не передаш обьекты java.util.Collections, поэтому мы в своем проекте сделали отдельный пакет, куда сложили обьекты для передачи по аксису, которые по сути дела копировали наши бизнес обьекты но в них небыло ненужных для передачи полей, небыло никакой логики и все колекции менялись на arrays[]. Также мы написали трансформер, который работает через reflection и трансформирует обычные обьекты в обьекты для передачи по axis, а потом на стороне клиента производили обратную трансформацию. Есть в аксисе ещё одна проблема, если ты попытаешся передавать обьекты которые ссылаются друг на друга, например дерево, у каждого нода которого есть ссылка на родителя, в таком случае аксис не сможет сериализовать этот обьект в xml т.к. произойдет зацикливание, и упадет по таймауту. Эту проблему мы тоже обошли, не буду уже тут расписывать как, но следует учитывать что она может возникнуть. Что касается exceptions которые могут упасть на сервере, то аксис их никак не возвращает, а просто пишет месагу типа "axis fault...." и на стороне клиента узнать какой exception упал на сервере невозможно, для решения этой проблемы думаю можно передавать какойто идентификатор exceptiona и бросать его самостоятельно уже на клиенте.
Незнаю, может есть более простые решения описанных выше проблем, буду рад если ктото напишет как можно сделать проще. --------------------
qip |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |