Un proxy sortant pour WebServiceTemplate de Spring
Reliez un transport HttpClient 5 configuré avec proxy au WebServiceTemplate et conservez l'intercepteur d'en-têtes requis par l'émetteur SOAP.
WebServiceTemplate envoie via son WebServiceMessageSender. Configurez le client HTTP de cet émetteur lorsque la destination SOAP exige un proxy sortant.
Pour Spring WS 4.1 avec 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 est le modèle existant de l'application. Son URI de service SOAP reste la destination ; le client HTTP détient l'intermédiaire, qui peut être un candidat public de la liste de proxys HTTP lorsque cette route est autorisée.
Le constructeur de client personnalisé n'ajoute pas l'intercepteur d'en-têtes habituel de l'émetteur. Conservez-le lors de l'assemblage du client : il supprime les en-têtes de transport fournis par SOAP que gère le traitement des requêtes d'Apache. Un émetteur construit via les valeurs par défaut de la fabrique de clients est une autre voie de construction qui conserve cette intégration.
Ajoutez les identifiants de proxy et les délais requis sur le client personnalisé via ses propres interfaces prises en charge. Les méthodes setter de l'émetteur ne remplacent pas la configuration d'un client déjà fourni.
Conservez le client pour la charge de travail du modèle et fermez les ressources possédées à l'arrêt. Cet exemple utilise l'émetteur HttpClient 5 ; les exemples Spring WS important org.apache.http décrivent une autre génération de clients.