Прямий проксі для 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 — це наявний шаблон застосунку. Його URI служби SOAP залишається призначенням; HTTP-клієнт містить посередника, яким може бути публічний кандидат зі списку HTTP-проксі, якщо цей маршрут дозволено.
Конструктор користувацького клієнта не додає звичайний перехоплювач заголовків відправника. Збережіть його під час складання клієнта: він видаляє транспортні заголовки, які надає SOAP і якими керує обробка запитів Apache. Відправник, побудований через типові налаштування фабрики клієнтів, — інший шлях побудови, що зберігає цю інтеграцію.
Додайте потрібні облікові дані проксі та тайм-аути до користувацького клієнта через його власні підтримувані інтерфейси. Сетери відправника не замінюють налаштування вже наданого клієнта.
Зберігайте клієнт для навантаження шаблону та закривайте власні ресурси під час завершення. Цей приклад використовує відправник HttpClient 5; приклади Spring WS, що імпортують org.apache.http, описують інше покоління клієнтів.