WebServiceTemplate verzendt via zijn WebServiceMessageSender. Configureer de HTTP-client van die verzender wanneer de SOAP-bestemming een forward-proxy vereist.

Voor Spring WS 4.1 met Apache HttpClient 5 beschikbaar:

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 is de bestaande sjabloon van de toepassing. De SOAP-service-URI blijft de bestemming; de HTTP-client bevat de tussenpartij, die een openbare kandidaat uit de HTTP-proxylijst kan zijn wanneer die route is toegestaan.

De constructor van een aangepaste client voegt niet de gebruikelijke header-interceptor van de verzender toe. Behoud deze bij het samenstellen van de client: hij verwijdert door SOAP geleverde transportheaders die de verzoekafhandeling van Apache beheert. Een verzender die via de standaardwaarden van de clientfabriek is gebouwd, is een ander constructiepad dat deze integratie behoudt.

Voeg de vereiste proxyreferenties en time-outs toe aan de aangepaste client via zijn eigen ondersteunde interfaces. De settermethoden van de verzender vervangen niet het configureren van een al geleverde client.

Behoud de client voor de werklast van de sjabloon en sluit eigen resources bij het afsluiten. Dit voorbeeld gebruikt de HttpClient 5-verzender; Spring WS-voorbeelden die org.apache.http importeren, beschrijven een andere clientgeneratie.

Gerelateerde artikelen