![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| N0dwis |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 18.9.2007 Где: Луганск Репутация: нет Всего: 4 |
Собственно, как в теме написано.
wsdl
запрос
и в результате
Но что интересно - вот такой запрос срабатывает!
Но ведь это бред - судя по wsdl сообщения getList нет вообще! Это сообщение отредактировал(а) N0dwis - 17.10.2010, 19:30 |
||||||||
|
|||||||||
| N0dwis |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 18.9.2007 Где: Луганск Репутация: нет Всего: 4 |
Решение просто, как все гениальное
Только почему-то описание этих нюансов нашел только в книге Eben Hewitt "Java SOA cookbook". Вся загвоздка была в способе передачи параметров, который задается аннтотацией @SOAPBinding. Их может быть 2 - wrapped и bare. В случае wrapped в wsdl файле описание аргументов сервиса задается вот так
А дальше tns:getList описывается как complexType
Способ описания аргументов это только одно из правил описания сервиса, которое зависит от выбранного "стиля связывания" (не знаю, как по-другому обозвать) сервиса. Он задается в секции binding wsdl файла вот так.
А вот еще одним правилом, зависящим от "стиля связывания" является вызов сервиса и ограничение на количество функций. При bare стиле передачи аргументов нельзя задавать более одной функции на сервис, т.е. uri /service/orders будет всегда вызывать строго определенную функцию сервиса. И при его вызове не используется имя сообщения вообще. Что и получается в последнем запросе из моего предыдущего поста. Насчет одной функции я не уверен. Кажется, можно все-таки несколько, но при этом их сигнатуры должны отличаться. При wrapped стиле все эти ограничения отсутствуют и там уже используются имена сообщений для вызова нужной функции. Для тестирования сервиса я использовал msSoap.SoapClient30, но похоже он не позволяет автоматически работать с wrapped стилем передачи параметров. Т.е. код
будет работать только если сервис использует bare стиль передачи параметров, в противном случае получается ошибка "Incorrect number of parameters supplied for SOAP request". Работать с wrapped стилем передачи параметров придется руками - см. функции StartEnvelope, StartBody и т.п. Там есть пример. Вот, в общем-то и все. |
||||||||
|
|||||||||
![]()
|
| Правила форума "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. |