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

Aplicați acest expeditor pe template existent înainte de apeluri, păstrând URI-ul serviciului, marshaller-ul și celelalte setări. Este Spring-WS 4.1.0 cu Apache HttpClient 5. Dacă șablonul vizează un serviciu SOAP public permis fără autentificare de proxy, o adresă HTTP din lista de proxy-uri HTTP poate completa proxy-ul personalizatorului.

withDefaults păstrează interceptorul care elimină Content-Length și Transfer-Encoding furnizate de SOAP înainte ca Apache să genereze încadrarea HTTP. Adăugarea personalizatorului de proxy acolo evită înlocuirea acelei integrări cu un client gol. Pentru un client Apache construit separat, păstrați interceptorul de eliminare a antetelor din Spring-WS.

Potriviți importurile și generarea expeditorului. Exemplele mai vechi cu HttpComponentsMessageSender/org.apache.http folosesc Apache 4, nu acest SimpleHttpComponents5MessageSender și interfața HttpHost.

Păstrați un expeditor creat manual pe toată durata de viață a clientului SOAP și pregătiți distrugerea lui normală după aceea. Un bean gestionat de Spring poate folosi ciclul de viață al containerului. Alte șabloane care păstrează alți expeditori își păstrează propria configurație de transport.

Articole similare