Configurar un proxy de Spring-WS 4.1 con HttpComponents 5
Personalice la fábrica de clientes HttpComponents5 de Spring-WS 4.1 y adjunte el emisor resultante al 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 emisor al template existente antes de las llamadas, conservando el URI del servicio, el marshaller y demás ajustes. Se trata de Spring-WS 4.1.0 con Apache HttpClient 5. Si la plantilla apunta a un servicio SOAP público permitido sin autenticación de proxy, una dirección HTTP de la lista de proxys HTTP puede rellenar el proxy del personalizador.
withDefaults conserva el interceptor que elimina el Content-Length y el Transfer-Encoding proporcionados por SOAP antes de que Apache genere el encuadre HTTP. Añadir allí el personalizador de proxy evita sustituir esa integración por un cliente desnudo. Para un cliente Apache construido por separado, conserve el interceptor de eliminación de cabeceras de Spring-WS.
Haga coincidir las importaciones y la generación del emisor. Los ejemplos antiguos con HttpComponentsMessageSender/org.apache.http usan Apache 4, no este SimpleHttpComponents5MessageSender ni la interfaz HttpHost.
Conserve un emisor creado manualmente durante toda la vida del cliente SOAP y organice su destrucción normal después. Un bean gestionado por Spring puede usar el ciclo de vida del contenedor. Otras plantillas que conservan otros emisores mantienen su propia configuración de transporte.