WebServiceTemplate - разница между перехватчиком и обратным вызовом?
Я пытаюсь написать свой первый клиент, используя Spring-WS, и немного запутался в некоторых основах. Мне нужно вставить токен SAML в заголовок, и я заметил, что класс WebServiceTemplate допускает как Interceptors, так и WebServiceMessageCallbacks.
Может кто-нибудь помочь мне понять, почему я должен использовать один против другого?
Во-вторых, я заметил, что класс WST допускает список перехватчиков, но только один обратный вызов. Кто-нибудь знает, какая логика стояла за этим дизайнерским решением? Почему нет возможности передать массив или список обратных вызовов?
Спасибо,
Эрик
1 ответ
Мне было интересно то же самое после прочтения вашего вопроса (-:
По этой ссылке есть краткое объяснение, и именно так я и использую оба. Например, для конкретного запроса мне нужно установить действие SOAP:
JAXBElement<Response> response = (JAXBElement<Response>) webserviceTemplate.marshalSendAndReceive(
request,
new SoapActionCallback("PutOrganisationUnitRequest")
);
Это действительно простой анонимный класс, как упомянуто в ссылке. С другой стороны, перехватчик определяется и используется для всех запросов. Взгляните, например, на XwsSecurityInterceptor, я использую это для настройки аутентификации на ВСЕХ запросах.