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

Прымяніце гэты адпраўнік да існуючага template перад выклікамі, захаваўшы URI службы, marshaller і іншыя налады. Гэта Spring-WS 4.1.0 з Apache HttpClient 5. Калі шаблон накіраваны на дазволеную публічную службу SOAP без аўтэнтыфікацыі проксі, HTTP-адрас за спісу HTTP-проксі можа запоўніць проксі наладчыка.

withDefaults захоўвае перахопнік, які выдаляе дадзеныя SOAP Content-Length і Transfer-Encoding, перш чым Apache створыць фарміраванне HTTP. Даданне наладчыка проксі менавіта там пазбягае замены гэтай інтэграцыі голым кліентам. Для асобна створанага кліента Apache захавайце перахопнік выдалення загалоўкаў Spring-WS.

Узгадзьце імпарты і стварэнне адпраўніка. Старыя прыклады з HttpComponentsMessageSender/org.apache.http выкарыстоўваюць Apache 4, а не гэты SimpleHttpComponents5MessageSender і інтэрфейс HttpHost.

Захоўвайце створаны ўручную адпраўнік на ўвесь тэрмін жыцця кліента SOAP і забяспечце звычайнае знішчэнне пасля. Bean, якім кіруе Spring, можа выкарыстоўваць жыццёвы цыкл кантэйнера. Іншыя шаблоны, што захоўваюць іншыя адпраўнікі, захоўваюць уласную канфігурацыю транспарту.

Падобныя артыкулы