2016-08-23 8 views
5

Я создаю веб-сервис SOAP с использованием Spring Boot SOAP Webservice Пример проекта. Если я использую следующий код, динамически созданный WSDL показывает операции.SpringBoot SOAP webservice Динамическое генерация WSDL не работает Если удалить суффикс запроса из элемента RequestPayload

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "AvailNotifRequest") 
@ResponsePayload 
public OTAHotelAvailNotifRS getAvailNotif(@RequestPayload AvailNotifRequest request) { 

Но мне нужен элемент запроса для изменения следующим образом.

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "OTAHotelAvailNotifRQ") 
@ResponsePayload 
public OTAHotelAvailNotifRS getOTAHotelAvailNotifRQ(@RequestPayload OTAHotelAvailNotifRQ request) { 

Я нашел аналогичный вопрос по этой ссылке Spring web service dynamic wsdl not generating message for a schema element ответ сказал, что мы должны добавить суффикс Запрос после запроса элемента как AvailNotifRequest, но я хочу использовать OTAHotelAvailNotifRQ как мой вход запроса. Как я могу использовать это, потому что я не получаю операции в wsdl, когда я меняю запрос ввода таким образом.

ответ

1

По official Spring-WS documentation:

< динамического WSDL> строит WSDL из XSD-схемы с помощью конвенций. Он выполняет итерацию по всем элементам элемента, найденным в схеме, и создает сообщение для всех элементов. Затем он создает WSDL-операцию для всех сообщений, заканчивающихся определенным суффиксом запроса или ответа. Суффикс запроса по умолчанию - Request; суффикс ответа по умолчанию - Response, хотя их можно изменить, установив атрибуты requestSuffix и responseSuffix на < dynamic-wsdl />, соответственно.

Другими словами, вы можете использовать setRequestSuffix и setResponseSuffix на DefaultWsdl11Definition для того, чтобы указать запрос и ответ суффикс, отличный от установленного по умолчанию. В приведенном выше случае, например, может быть:

wsdl11Definition.setRequestSuffix("RQ"); 
wsdl11Definition.setResponseSuffix("RS");