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);

Appliquez cet émetteur au template existant avant les appels, en conservant l'URI du service, le marshaller et les autres réglages. Il s'agit de Spring-WS 4.1.0 avec Apache HttpClient 5. Si le modèle cible un service SOAP public autorisé sans authentification de proxy, une adresse HTTP de la liste de proxys HTTP peut renseigner le proxy du personnaliseur.

withDefaults conserve l'intercepteur qui supprime les en-têtes Content-Length et Transfer-Encoding fournis par SOAP avant qu'Apache ne génère le cadrage HTTP. Ajouter le personnaliseur de proxy à cet endroit évite de remplacer cette intégration par un client nu. Pour un client Apache construit séparément, conservez l'intercepteur de suppression d'en-têtes de Spring-WS.

Faites correspondre les imports et la génération de l'émetteur. Les anciens exemples avec HttpComponentsMessageSender/org.apache.http utilisent Apache 4, et non cet SimpleHttpComponents5MessageSender ni l'interface HttpHost.

Conservez un émetteur créé manuellement pendant toute la durée de vie du client SOAP, puis organisez sa destruction normale. Un bean géré par Spring peut utiliser le cycle de vie du conteneur. D'autres modèles conservant d'autres émetteurs gardent leur propre configuration de transport.

Articles similaires