2015-09-01 6 views
0

Я создал конечную точку службы веб-с Spring-WS:Как добавить заголовок SOAP с пружинным-WS

@Endpoint 
public class MyEndpoint{ 

@PayloadRoot(namespace = NAMESPACE, localPart = "MyRequest" 
@ResponsePayload 
public final MyResponse MyService(@RequestPayload final MyRequest request, SoapHeader header) { 

... implementation that creates the reponse ... 

return response; 
} 

это создает мне службу и генерирует WSDL для службы. Но раздел в моем WSDL остается пустым.

Итак, что мне нужно сделать, чтобы «заполнить» заголовок?

ответ

1

SoapHeader не представляет собой отдельный заголовочный блок, а элемент soap:Header, который содержит все блоки заголовков в качестве дочерних элементов. Это означает, что определение вашего сервиса не обеспечивает достаточного количества метаданных для создания WSDL с частью сообщения, связанной с блоком заголовка. Вам нужно объявить аргумент SoapHeaderElement с аннотацией @SoapHeader, которая задает имя блока заголовка. Теоретически это обеспечило бы достаточное количество метаданных для генерации ожидаемого WSDL, но я считаю, что на практике Spring-WS этого не поддерживает. Обратите внимание, что это не означает, что сгенерированный WSDL неверен. Причина в том, что не обязательно объявлять блоки заголовков в WSDL.