powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring-WS: изменение WSDL сгенерированного Spring'ом
6 сообщений из 6, страница 1 из 1
Spring-WS: изменение WSDL сгенерированного Spring'ом
    #39146359
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, наверное, экзотическая проблема, но может кто-то поможет.
Такое дело:
есть клиент который я не могу изменять, который шлет запрос фиксированного вида.

под него нужно написать веб сервис.

для этого я использую spring-ws.

Spring-ws многое делает сам и даже генерирует wsdl из xsd по своим каким-то правилам. Не знаю радоваться этому или нет.

В моем случае он сгенерировал (возвращает по ссылке) wsdl, одна из операций которого в реквесте SOAP UI имеет вид такой:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sin="http://comp.com/2015/webservice"> <soapenv:Header/> 
<soapenv:Body> 
<min:Elem0>
<min:Elem1> </min:Elem1> 
<min:Elem2> </min:Elem2> 
</min:Elem0> 
</soapenv:Body> 
</soapenv:Envelope>



Суть тут в том что рутовым элементом является Elem0. А мне нужно чтобы рутовыми элементами были Elem1 и Elem2. Изменения XSD к результату не привели - всегда один рутовый элемент, который инкапсулирует в себе все остальные.

Вопрос: есть ли способы изменить wsdl, который генерирует spring-ws на основании xsd?
Поиски в интернетах говорят о том, что нужно использовать некий static-wsdl в этом случае, но может есть другие советы, идеи. Заранее спасибо.
...
Рейтинг: 0 / 0
Spring-WS: изменение WSDL сгенерированного Spring'ом
    #39146392
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генерировать WSDL это всегда плохая идея. Вообще ситуация умопомрачительная - есть клиент, нет сервера и нет WSDL. Откуда клиент тогда вообще знает что отправлять?
Вообще SpringWS всегда проповедовал подход WSDL First и точка. Не уже ли они отошли от этой славной традиции?

Ну, как решение, генерируем WSDL. Сохраняем, правим на то что хотим, используем WSDL для генерации сервиса.

Но самая проблема, которую я тут вижу это ваше желание иметь несколько тэгов в Body. SOAP и WSDL такое позволяют, но как такое биндить на Java - мне не понятно. Одна операция это 1 метод.

В общем, берите ваш WSDL. Меняйте operation message с одного input, на два. И пробуйте заставить Spring сгенерить API по этой WSDL.
...
Рейтинг: 0 / 0
Spring-WS: изменение WSDL сгенерированного Spring'ом
    #39146735
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Код: plaintext
1.
Генерировать WSDL это всегда плохая идея. Вообще ситуация умопомрачительная - есть клиент, нет сервера и нет WSDL. Откуда клиент тогда вообще знает что отправлять?
есть клиент. Сервер был, например, его не стало. Исходников не осталось. Например.

авторВообще SpringWS всегда проповедовал подход WSDL First и точка. Не уже ли они отошли от этой славной традиции?
нее отошли.
автор Spring сгенерить API по этой WSDL.
он тока с традиционно XSD работает.
...
Рейтинг: 0 / 0
Spring-WS: изменение WSDL сгенерированного Spring'ом
    #39146760
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12,

Не знаю о чем вы вообще
Вот тут
http://docs.spring.io/spring-ws/site/reference/html/tutorial.html
раздел Service Contract

Код: xml
1.
2.
3.
4.
5.
<wsdl:portType name="HumanResource">
        <wsdl:operation name="Holiday">
            <wsdl:input message="tns:HolidayRequest" name="HolidayRequest"/>
        </wsdl:operation>
</wsdl:portType>



Вам нужно два input внутри operation , по идее.
...
Рейтинг: 0 / 0
Spring-WS: изменение WSDL сгенерированного Spring'ом
    #39147033
Фотография May12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо. Приходит просветление. Как итог: мне надо написать отдельный модуль в виде веб-приложения, где spring-ws не будет генерить wsdl из xsd а возьмет ручками написанный wsdl.
...
Рейтинг: 0 / 0
Spring-WS: изменение WSDL сгенерированного Spring'ом
    #39147048
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
May12Blazkowicz, спасибо. Приходит просветление. Как итог: мне надо написать отдельный модуль в виде веб-приложения, где spring-ws не будет генерить wsdl из xsd а возьмет ручками написанный wsdl.
Да. Что-то типа того. Но я не уверен что это сработает. Я никогда не видел сервисов реализованных подобным образом. А уж с SOAP последние 10 с лишним лет я общаюсь часто и много. С другой стороны, Spring WS меня приятно удивил в своё время тем что смог справиться с другими экзотическими требованиями. Может немного усилия и напильник помогут и ваше желание реализовать.

В самом худшем случае - выкидывайте WS фреймверк. Ловите XML по HTTP, любым XML API вытаскивайте body и его уже разбирайте как вам нравится.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring-WS: изменение WSDL сгенерированного Spring'ом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]