Spring webservice с существующим WSDL - PullRequest
0 голосов
/ 07 мая 2018

У меня есть WSDL с 3 операциями и схемами xsd, определенными снаружи, 2 схемами для каждой операции (запрос + ответ) и одним отказом, одинаковым для всех операций. Это выглядит так:

src/main/resources/wsdl/transactions
-TransactionsOperations.wsdl
-FindTransactionRequest.xsd
-FindTransactionResponse.xsd
-RemoveTransactionRequest.xsd
...
-FaultMessage.xsd

На данный момент все работает на Weblogic, но я хотел попробовать это с Spring. Я не могу заставить его работать, хотя. Я следовал этому уроку шаг за шагом. Хорошо, wsdl действительно отображается в браузере после перехода на localhost:8080/ws/TransactionsOperations.wsdl, но когда я импортирую его в SoapUI, он не может разрешить схему (и это неудивительно, потому что их там нет). Схемы находятся в той же папке, что и WSDL, но по какой-то причине они не развернуты.

Я делаю это точно так же, как в учебнике, за исключением того, что мои схемы определены внешне и не встроены в WSDL, и я думаю, что в этом вся проблема. Они импортируются в WSDL с <xsd:import schemaLocation="FaultMessage.xsd".... Мне кажется, что Spring не проверяет эти импорты, но я не нашел способа рассказать ему о них (у SimpleWsdl11Definition есть только один метод setWsdl ...). Это вообще возможно сделать в Spring, или я должен позволить Spring генерировать WSDL для меня, предоставляя только схемы?

Я попытался дать ему схемы и дать ему возможность сгенерировать WSDL для меня, но это тоже не сработало (я попытался использовать setSchemaCollection на DefaultWsdl11Definition, это сгенерировало в основном 2-строчный пустой WSDL). Единственный способ заставить его работать - это объединить все схемы в один XSD и сделать это в соответствии с официальным руководством Spring , и я просто не могу этого сделать, это превращается в беспорядок с несколькими операции.

Вид побочной проблемы: когда я импортировал это рабочее решение в SoapUI, запросы / ответы имели пространства имен перед каждым элементом XML, можно ли от них избавиться? (например, <ns:id>1</ns:id> в запросе или <ns2:accountNumber>123</ns2:accountNumber>). Этого не происходит с реализацией Weblogic.

/ редактировать

Обнаружил 2 проблемы в Spring jira по этому поводу: https://jira.spring.io/browse/SWS-281 https://jira.spring.io/browse/SWS-346 и, видимо, это было исправлено, но я не могу заставить его работать.

Здесь Я нашел способ решить эту проблему, но только с одной схемой, и получил их несколько.

...