Een Spring-WS 4.1-proxy configureren met HttpComponents 5
Pas de HttpComponents5-clientfactory van Spring-WS 4.1 aan en koppel de resulterende sender aan de 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);Pas deze sender vóór aanroepen toe op de bestaande template en behoud de service-URI, marshaller en andere instellingen. Dit is Spring-WS 4.1.0 met Apache HttpClient 5. Als de template een toegestane publieke SOAP-service zonder proxyauthenticatie als doel heeft, kan een HTTP-adres uit de HTTP-proxylijst de proxy van de customizer vullen.
withDefaults behoudt de interceptor die de door SOAP geleverde Content-Length en Transfer-Encoding verwijdert voordat Apache de HTTP-framing genereert. De proxy-customizer daar toevoegen voorkomt dat die integratie door een kale client wordt vervangen. Voor een apart gebouwde Apache-client behoudt u de header-verwijderende interceptor van Spring-WS.
Laat imports en sendergeneratie op elkaar aansluiten. Oudere voorbeelden met HttpComponentsMessageSender/org.apache.http gebruiken Apache 4, niet deze SimpleHttpComponents5MessageSender en de HttpHost-interface.
Behoud een handmatig gemaakte sender voor de hele levensduur van de SOAP-client en regel daarna de normale vernietiging. Een door Spring beheerde bean kan de levenscyclus van de container gebruiken. Andere templates die andere senders behouden, houden hun eigen transportconfiguratie.