WebServiceTemplate envía a través do seu WebServiceMessageSender. Configure o cliente HTTP dese emisor cando o destino SOAP requira un proxy directo.

Para Spring WS 4.1 con Apache HttpClient 5 dispoñible:

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 é a plantilla existente da aplicación. O seu URI de servizo SOAP segue a ser o destino; o cliente HTTP contén o intermediario, que pode ser un candidato público da lista de proxies HTTP cando esa ruta estea permitida.

O construtor de cliente personalizado non engade o interceptor de cabeceiras habitual do emisor. Consérveo ao montar o cliente: elimina as cabeceiras de transporte proporcionadas por SOAP que xestiona o procesamento de solicitudes de Apache. Un emisor construído mediante os valores predeterminados da fábrica de clientes é outra vía de construción que conserva esta integración.

Engada as credenciais de proxy e os tempos de espera necesarios ao cliente personalizado a través das súas propias interfaces compatibles. Os métodos setter do emisor non substitúen a configuración dun cliente xa proporcionado.

Conserve o cliente para a carga de traballo da plantilla e peche os recursos propios ao apagar. Este exemplo utiliza o emisor HttpClient 5; os exemplos de Spring WS que importan org.apache.http describen outra xeración de clientes.

Artigos relacionados