import org.apache.hc.core5.http.HttpHost;
import org.springframework.ws.transport.http.HttpComponents5ClientFactory;
import org.springframework.ws.transport.http.SimpleHttpComponents5MessageSender;

var factory = HttpComponents5ClientFactory.withDefaults();
factory.addClientBuilderCustomizer(builder ->
    builder.setProxy(new HttpHost("http", "proxy.example", 8080)));

var sender = new SimpleHttpComponents5MessageSender(factory);
template.setMessageSender(sender);

Застосуйте цей відправник до наявного template перед викликами, зберігши URI служби, marshaller та інші параметри. Це Spring-WS 4.1.0 з Apache HttpClient 5. Якщо шаблон звертається до дозволеної публічної служби SOAP без автентифікації проксі, HTTP-адреса зі списку HTTP-проксі може заповнити проксі налаштовувача.

withDefaults зберігає перехоплювач, який вилучає заголовки Content-Length і Transfer-Encoding, надані SOAP, перш ніж Apache сформує кадрування HTTP. Додавання налаштовувача проксі саме там унеможливлює заміну цієї інтеграції голим клієнтом. Для окремо створеного клієнта Apache збережіть перехоплювач Spring-WS для вилучення заголовків.

Узгодьте імпорти й створення відправника. Старіші приклади з HttpComponentsMessageSender/org.apache.http використовують Apache 4, а не цей SimpleHttpComponents5MessageSender та інтерфейс HttpHost.

Зберігайте створений вручну відправник упродовж усього життя клієнта SOAP, а потім забезпечте його звичайне знищення. Бін, яким керує Spring, може використовувати життєвий цикл контейнера. Інші шаблони, що зберігають інших відправників, тримають власну конфігурацію транспорту.

Схожі статті