2015-02-26 2 views
0

Мне нужно создать веб-сервис, который включает в себя заголовок SOAP в ответ с помощью spring-ws.Добавить заголовок SOAP к ответу конечной точки spring-ws 2.2.0

Моя конечная точка обрабатывает заголовок запроса, а затем возвращает элемент, который будет ответом тела SOAP.

Что мне нужно сделать, так это добавить заголовок SOAP в этот ответ, используя информацию из заголовка запроса.

Единственный способ, которым я знаю, как это сделать, - использовать перехватчик, но я не знаю, как получить объект заголовка, который я отменил от запроса.

Я использую этот способ, чтобы написать свою конечную точку, так как я хочу маршализацию и проверить заголовок в моем коде:

public void handle(@RequestPayload DOMSource domSource, SoapHeader header) 

Однако документация также имеет этот альтернативный

public void handle(@RequestPayload MyJaxb2Object requestObject, @RequestPayload Element element, Message messageContext) 

Но это не работает для меня, потому что я не хочу отменять полезную нагрузку, а только заголовок.

Я использую Spring-ws 2.2.0. http://docs.spring.io/spring-ws/docs/2.2.0.RELEASE/reference/htmlsingle/

Большое спасибо Привет

ответ

1

Итак, я нашел решение этой проблемы.

Spring-WS примет любые аргументы метода обработки конечных точек, который может быть разрешен. Существует много резольверов, и вы можете создать свой собственный, но тот, который мне нужен, уже существует (MessageContextMethodArgumentResolver), я видел код для этого, и он проверял только класс параметров. Моя проблема заключалась в том, что я использовал Message, когда вместо этого должен был использовать org.springframework.ws.context.MessageContext.

Как только я исправил, что мне удалось получить три параметра, которые мне нужны, полезную нагрузку, аннотированную с помощью @RequestPayload, SoapHeader и MessageContext.

Со всеми этими вещами я смог установить объекты в контексте сообщения как свойства. Затем я написал EndpointInterceptor и в методе handleResponse я создал заголовок SOAP, используя информацию в моем объекте.

Смежные вопросы