Configurare un proxy Spring-WS 4.1 con HttpComponents 5
Personalizzate la factory client HttpComponents5 di Spring-WS 4.1 e collegate il sender risultante 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);Applicate questo sender al template esistente prima delle chiamate, mantenendo l'URI del servizio, il marshaller e le altre impostazioni. Si tratta di Spring-WS 4.1.0 con Apache HttpClient 5. Se il template punta a un servizio SOAP pubblico consentito senza autenticazione proxy, un indirizzo HTTP dalla lista di proxy HTTP può riempire il proxy del personalizzatore.
withDefaults mantiene l'interceptor che rimuove Content-Length e Transfer-Encoding forniti da SOAP prima che Apache generi l'incorniciatura HTTP. Aggiungere lì il personalizzatore del proxy evita di sostituire quell'integrazione con un client nudo. Per un client Apache costruito separatamente, conservate l'interceptor di rimozione delle intestazioni di Spring-WS.
Fate corrispondere gli import e la generazione del sender. Gli esempi più vecchi con HttpComponentsMessageSender/org.apache.http usano Apache 4, non questo SimpleHttpComponents5MessageSender e l'interfaccia HttpHost.
Conservate un sender creato manualmente per tutta la durata del client SOAP e predisponete la sua distruzione normale in seguito. Un bean gestito da Spring può usare il ciclo di vita del container. Altri template che conservano altri sender mantengono la propria configurazione di trasporto.