Настройка прокси 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 сохраняет перехватчик, удаляющий заголовки Content-Length и Transfer-Encoding, которые передаёт SOAP, до того как Apache сформирует кадрирование HTTP. Добавление настройщика прокси именно там не даёт заменить эту интеграцию голым клиентом. Для отдельно созданного клиента Apache сохраните перехватчик Spring-WS, удаляющий заголовки.
Согласуйте импорты и создание отправителя. Более старые примеры с HttpComponentsMessageSender/org.apache.http используют Apache 4, а не этот SimpleHttpComponents5MessageSender и интерфейс HttpHost.
Сохраняйте вручную созданный отправитель на всё время жизни клиента SOAP и обеспечьте затем его обычное уничтожение. Бин, управляемый Spring, может использовать жизненный цикл контейнера. Другие шаблоны, сохраняющие других отправителей, оставляют собственную конфигурацию транспорта.