2015-11-23 8 views
3

У меня есть URL-адрес конечной точки SOAP (скажем: «EP1»), который мы можем подключить только через прокси-сервер.Как установить данные прокси-сервера на WebServiceTemplate

Мы используем org.springframework.ws.client.core.WebServiceTemplate класс для использования веб-сервисов.

Мой вопрос: есть ли способ передать/установить данные прокси-сервера на WebServiceTemplate для подключения к URL-адресу конечной точки «EP1»?

ответ

2

Вы должны использовать VM аргументы: -Dhttp.proxyHost=mydomain.com -Dhttp.proxyPort=8080

Имея в виду, что этот параметр применяется ко всем HTTP запросов, сделанных из Java.

3

При построении WebServiceTemplate вы можете указать пользовательские HttpClient через HttpComponentsMessageSender. Затем вы можете передать конфигурацию запроса по умолчанию, которая включает прокси-сервер для клиента. Нечто подобное должно работать:

RequestConfig config = RequestConfig 
     .custom() 
     .setProxy(new HttpHost("host")) 
     .build(); 

CloseableHttpClient client = HttpClients 
     .custom() 
     .setDefaultRequestConfig(config) 
     .build(); 

HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender(client); 

WebServiceTemplate wsTemplate = new WebServiceTemplate(); 
wsTemplate.setMessageSender(messageSender); 
// Set other required properties ... 

Вам может понадобиться установить другие свойства на WebServiceTemplate объекта или HttpClient в зависимости от ваших потребностей так далее. Но это должно продемонстрировать основную концепцию.

Также обратите внимание на this sample, иллюстрирующий использование прокси-серверов в HTTP-клиенте Apache.