O WebServiceTemplate envia através do seu WebServiceMessageSender. Configure o cliente HTTP desse emissor quando o destino SOAP exigir um proxy de encaminhamento.

Para Spring WS 4.1 com Apache HttpClient 5 disponível:

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 é o modelo existente da aplicação. O URI do serviço SOAP continua a ser o destino; o cliente HTTP detém o intermediário, que pode ser um candidato público da lista de proxies HTTP quando essa rota for permitida.

O construtor de cliente personalizado não acrescenta o interceptor de cabeçalhos habitual do emissor. Mantenha-o ao montar o cliente: remove os cabeçalhos de transporte fornecidos pelo SOAP que o processamento de pedidos do Apache gere. Um emissor construído através dos padrões da fábrica de clientes é outra via de construção que preserva esta integração.

Acrescente as credenciais de proxy e os tempos limite necessários ao cliente personalizado através das suas próprias interfaces suportadas. Os métodos setter do emissor não substituem a configuração de um cliente já fornecido.

Mantenha o cliente para a carga de trabalho do modelo e feche os recursos próprios ao encerrar. Este exemplo usa o emissor HttpClient 5; os exemplos de Spring WS que importam org.apache.http descrevem outra geração de clientes.

Artigos relacionados