WebServiceTemplate envia a través del seu WebServiceMessageSender. Configureu el client HTTP d'aquest emissor quan la destinació SOAP requereixi un proxy directe.

Per a Spring WS 4.1 amb Apache HttpClient 5 disponible:

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 és la plantilla existent de l'aplicació. El seu URI de servei SOAP continua sent la destinació; el client HTTP conté l'intermediari, que pot ser un candidat públic de la llista de proxys HTTP quan aquesta ruta estigui permesa.

El constructor de client personalitzat no afegeix l'interceptor de capçaleres habitual de l'emissor. Conserveu-lo en muntar el client: elimina les capçaleres de transport proporcionades per SOAP que gestiona el processament de peticions d'Apache. Un emissor construït amb els valors predeterminats de la fàbrica de clients és una altra via de construcció que conserva aquesta integració.

Afegiu les credencials de proxy i els temps d'espera necessaris al client personalitzat a través de les seves pròpies interfícies admeses. Els mètodes setter de l'emissor no substitueixen la configuració d'un client ja proporcionat.

Conserveu el client per a la càrrega de treball de la plantilla i tanqueu els recursos propis en aturar. Aquest exemple utilitza l'emissor HttpClient 5; els exemples de Spring WS que importen org.apache.http descriuen una altra generació de clients.

Articles relacionats