Конфигуриране на прокси за Spring-WS 4.1 с HttpComponents 5
Настройте клиентската фабрика HttpComponents5 на Spring-WS 4.1 и прикачете получения изпращач към WebServiceTemplate.
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 може да използва жизнения цикъл на контейнера. Други шаблони, които запазват други изпращачи, пазят собствената си транспортна конфигурация.