Configurar un proxy de Spring-WS 4.1 amb HttpComponents 5
Personalitzeu la fàbrica de clients HttpComponents5 de Spring-WS 4.1 i adjunteu l'emissor resultant al 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);Apliqueu aquest emissor a template existent abans de les crides, conservant l'URI del servei, el marshaller i altres ajustos. Això és Spring-WS 4.1.0 amb Apache HttpClient 5. Si la plantilla apunta a un servei SOAP públic permès sense autenticació de proxy, una adreça HTTP de la llista de proxys HTTP pot omplir el proxy del personalitzador.
withDefaults manté l'interceptor que elimina el Content-Length i el Transfer-Encoding proporcionats per SOAP abans que Apache generi l'emmarcat HTTP. Afegir-hi el personalitzador de proxy evita substituir aquesta integració per un client nu. Per a un client Apache construït per separat, conserva l'interceptor d'eliminació de capçaleres de Spring-WS.
Feu coincidir les importacions i la generació de l'emissor. Els exemples antics amb HttpComponentsMessageSender/org.apache.http fan servir Apache 4, no aquest SimpleHttpComponents5MessageSender ni la interfície HttpHost.
Conserveu un emissor creat manualment durant tota la vida del client SOAP i organitzeu-ne la destrucció normal després. Un bean gestionat per Spring pot utilitzar el cicle de vida del contenidor. Altres plantilles que conserven altres emissors mantenen la seva pròpia configuració de transport.