En vidarebefordrande proxy för Springs WebServiceTemplate
Anslut en proxykonfigurerad HttpClient 5-transport till WebServiceTemplate och behåll den header-interceptor som SOAP-avsändaren kräver.
WebServiceTemplate skickar via sin WebServiceMessageSender. Konfigurera den avsändarens HTTP-klient när SOAP-målet kräver en vidarebefordrande proxy.
För Spring WS 4.1 med Apache HttpClient 5 tillgänglig:
var http = org.apache.hc.client5.http.impl.classic.HttpClients.custom()
.setProxy(new org.apache.hc.core5.http.HttpHost(
"http", "proxy.example", 8080))
.addRequestInterceptorFirst(
new org.springframework.ws.transport.http
.HttpComponents5ClientFactory.RemoveSoapHeadersInterceptor())
.build();
var sender = new org.springframework.ws.transport.http
.HttpComponents5MessageSender(http);
webServiceTemplate.setMessageSender(sender);webServiceTemplate är applikationens befintliga mall. Dess SOAP-tjänst-URI förblir målet; HTTP-klienten håller mellanledet, som kan vara en offentlig kandidat från HTTP-proxylistan när den vägen är tillåten.
Konstruktorn för en anpassad klient lägger inte till avsändarens vanliga header-interceptor. Behåll den när klienten sätts ihop: den tar bort SOAP-levererade transportrubriker som Apaches förfrågningshantering styr. En avsändare byggd via klientfabrikens standardvärden är en annan konstruktionsväg som behåller denna integration.
Lägg till nödvändiga proxyuppgifter och tidsgränser på den anpassade klienten genom dess egna stödda gränssnitt. Avsändarens setter-metoder ersätter inte konfiguration av en redan tillhandahållen klient.
Behåll klienten för mallens arbetsbelastning och stäng ägda resurser vid avstängning. Det här exemplet använder HttpClient 5-avsändaren; Spring WS-exempel som importerar org.apache.http beskriver en annan klientgeneration.