WebServiceTemplate invia tramite il proprio WebServiceMessageSender. Configurate il client HTTP di quel mittente quando la destinazione SOAP richiede un proxy forward.

Per Spring WS 4.1 con Apache HttpClient 5 disponibile:

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 è il modello esistente dell'applicazione. Il suo URI del servizio SOAP resta la destinazione; il client HTTP detiene l'intermediario, che può essere un candidato pubblico dall'elenco dei proxy HTTP quando quella rotta è consentita.

Il costruttore di un client personalizzato non aggiunge il consueto intercettore di intestazione del mittente. Conservatelo durante l'assemblaggio del client: rimuove le intestazioni di trasporto fornite da SOAP gestite dall'elaborazione delle richieste di Apache. Un mittente costruito tramite i valori predefiniti della factory dei client è un'altra via di costruzione che conserva questa integrazione.

Aggiungete le credenziali proxy e i timeout necessari al client personalizzato tramite le sue stesse interfacce supportate. I metodi setter del mittente non sostituiscono la configurazione di un client già fornito.

Conservate il client per il carico di lavoro del modello e chiudete le risorse possedute allo spegnimento. Questo esempio usa il mittente HttpClient 5; gli esempi Spring WS che importano org.apache.http descrivono un'altra generazione di client.

Articoli correlati