Configurar um proxy Spring-WS 4.1 com HttpComponents 5
Personalize a fábrica de clientes HttpComponents5 do Spring-WS 4.1 e anexe o remetente resultante ao WebServiceTemplate.
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);Aplique este remetente ao template existente antes das chamadas, preservando o URI do serviço, o marshaller e outras configurações. Trata-se do Spring-WS 4.1.0 com Apache HttpClient 5. Se o modelo visa um serviço SOAP público permitido sem autenticação de proxy, um endereço HTTP da lista de proxies HTTP pode preencher o proxy do personalizador.
withDefaults mantém o interceptor que remove o Content-Length e o Transfer-Encoding fornecidos pelo SOAP antes de o Apache gerar o enquadramento HTTP. Adicionar ali o personalizador de proxy evita substituir essa integração por um cliente nu. Para um cliente Apache construído separadamente, mantenha o interceptor de remoção de cabeçalhos do Spring-WS.
Faça coincidir as importações e a geração do remetente. Os exemplos mais antigos com HttpComponentsMessageSender/org.apache.http usam Apache 4, e não este SimpleHttpComponents5MessageSender nem a interface HttpHost.
Mantenha um remetente criado manualmente durante toda a vida do cliente SOAP e organize a sua destruição normal depois. Um bean gerido pelo Spring pode usar o ciclo de vida do contentor. Outros modelos que mantêm outros remetentes conservam a sua própria configuração de transporte.