WebServiceTemplate trimite prin WebServiceMessageSender-ul său. Configurați clientul HTTP al acelui expeditor când destinația SOAP necesită un proxy forward.

Pentru Spring WS 4.1 cu Apache HttpClient 5 disponibil:

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 este șablonul existent al aplicației. URI-ul serviciului SOAP rămâne destinația; clientul HTTP deține intermediarul, care poate fi un candidat public din lista de proxy-uri HTTP când acea rută este permisă.

Constructorul de client personalizat nu adaugă interceptorul obișnuit de antete al expeditorului. Păstrați-l la asamblarea clientului: elimină antetele de transport furnizate de SOAP pe care le gestionează procesarea cererilor din Apache. Un expeditor construit prin valorile implicite ale fabricii de clienți este o altă cale de construcție care păstrează această integrare.

Adăugați acreditările de proxy și termenele necesare pe clientul personalizat prin propriile interfețe acceptate. Metodele setter ale expeditorului nu înlocuiesc configurarea unui client deja furnizat.

Păstrați clientul pentru volumul de lucru al șablonului și închideți resursele deținute la oprire. Acest exemplu folosește expeditorul HttpClient 5; exemplele Spring WS care importă org.apache.http descriu o altă generație de clienți.

Articole similare