WebServiceTemplate изпраща чрез своя WebServiceMessageSender. Конфигурирайте HTTP клиента на този изпращач, когато SOAP дестинацията изисква преден прокси.

За Spring WS 4.1 с наличен Apache HttpClient 5:

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 е съществуващият шаблон на приложението. Неговият SOAP service URI остава дестинацията; HTTP клиентът държи посредника, който може да е публичен кандидат от списъка с HTTP проксита, когато този маршрут е разрешен.

Конструкторът на персонализиран клиент не добавя обичайния прехващач на заглавки на изпращача. Запазете го при сглобяване на клиента: той премахва предоставените от SOAP транспортни заглавки, управлявани от обработката на заявки на Apache. Изпращач, изграден чрез стандартните настройки на фабриката за клиенти, е друг път за изграждане, който запазва тази интеграция.

Добавете необходимите прокси идентификационни данни и таймаути на персонализирания клиент чрез собствените му поддържани интерфейси. Сетърите на изпращача не заместват конфигурирането на вече предоставен клиент.

Запазете клиента за натоварването на шаблона и затворете притежаваните ресурси при спиране. Този пример използва изпращача HttpClient 5; примерите за Spring WS, които импортират org.apache.http, описват друго поколение клиенти.

Подобни статии