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 запазва прихващача, който премахва предоставените от SOAP Content-Length и Transfer-Encoding, преди Apache да генерира HTTP рамкирането. Добавянето на настройвача за прокси там избягва замяната на тази интеграция с гол клиент. За отделно създаден Apache клиент запазете прихващача за премахване на заглавки на Spring-WS.

Съгласувайте импортите и генерирането на изпращача. По-старите примери с HttpComponentsMessageSender/org.apache.http използват Apache 4, а не този SimpleHttpComponents5MessageSender и интерфейса HttpHost.

Запазете ръчно създадения изпращач за целия живот на SOAP клиента и осигурете нормалното му унищожаване след това. Управляван от Spring bean може да използва жизнения цикъл на контейнера. Други шаблони, които запазват други изпращачи, пазят собствената си транспортна конфигурация.

Подобни статии