En videresendende proxy for Springs WebServiceTemplate
Koble en proxykonfigurert HttpClient 5-transport til WebServiceTemplate og behold header-interceptoren som SOAP-senderen krever.
WebServiceTemplate sender gjennom sin WebServiceMessageSender. Konfigurer den senderens HTTP-klient når SOAP-målet krever en videresendende proxy.
For Spring WS 4.1 med Apache HttpClient 5 tilgjengelig:
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 er applikasjonens eksisterende mal. SOAP-tjenestens URI forblir målet; HTTP-klienten holder mellomleddet, som kan være en offentlig kandidat fra HTTP-proxylisten når den ruten er tillatt.
Konstruktøren for en tilpasset klient legger ikke til senderens vanlige header-interceptor. Behold den når klienten settes sammen: den fjerner SOAP-leverte transportheadere som Apaches forespørselsbehandling styrer. En sender bygget via klientfabrikkens standardinnstillinger er en annen konstruksjonsvei som beholder denne integrasjonen.
Legg til nødvendige proxy-legitimasjoner og tidsavbrudd på den tilpassede klienten gjennom dens egne støttede grensesnitt. Senderens setter-metoder erstatter ikke konfigurering av en klient som allerede er levert.
Behold klienten for malens arbeidsmengde, og lukk eide ressurser ved avslutning. Dette eksemplet bruker HttpClient 5-senderen; Spring WS-eksempler som importerer org.apache.http beskriver en annen klientgenerasjon.