Преден прокси за WebServiceTemplate на Spring
Свържете конфигуриран през прокси транспорт HttpClient 5 към WebServiceTemplate и запазете задължителния прехващач на заглавки на SOAP изпращача.
WebServiceTemplate изпраща чрез своя WebServiceMessageSender. Конфигурирайте HTTP клиента на този изпращач, когато SOAP дестинацията изисква преден прокси.
За Spring WS 4.1 с наличен Apache HttpClient 5:
var http = org.apache.hc.client5.http.impl.classic.HttpClients.custom()
.setProxy(new org.apache.hc.core5.http.HttpHost(
"http", "proxy.example", 8080))
.addRequestInterceptorFirst(
new org.springframework.ws.transport.http
.HttpComponents5ClientFactory.RemoveSoapHeadersInterceptor())
.build();
var sender = new org.springframework.ws.transport.http
.HttpComponents5MessageSender(http);
webServiceTemplate.setMessageSender(sender);webServiceTemplate е съществуващият шаблон на приложението. Неговият SOAP service URI остава дестинацията; HTTP клиентът държи посредника, който може да е публичен кандидат от списъка с HTTP проксита, когато този маршрут е разрешен.
Конструкторът на персонализиран клиент не добавя обичайния прехващач на заглавки на изпращача. Запазете го при сглобяване на клиента: той премахва предоставените от SOAP транспортни заглавки, управлявани от обработката на заявки на Apache. Изпращач, изграден чрез стандартните настройки на фабриката за клиенти, е друг път за изграждане, който запазва тази интеграция.
Добавете необходимите прокси идентификационни данни и таймаути на персонализирания клиент чрез собствените му поддържани интерфейси. Сетърите на изпращача не заместват конфигурирането на вече предоставен клиент.
Запазете клиента за натоварването на шаблона и затворете притежаваните ресурси при спиране. Този пример използва изпращача HttpClient 5; примерите за Spring WS, които импортират org.apache.http, описват друго поколение клиенти.