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.

Gerelateerde artikelen