У меня есть приложение, которое должно сделать запрос клиента SOAP к системе в Интернете, поэтому ему нужно пройти через наш HTTP-прокси.
Это можно сделать, установив общесистемные значения, такие как системные свойства:
// Cowboy-style. Blow away anything any other part of the application has set.
System.getProperties().put("proxySet", "true");
System.getProperties().put("https.proxyHost", HTTPS_PROXY_HOST);
System.getProperties().put("https.proxyPort", HTTPS_PROXY_PORT);
Или, установив по умолчанию ProxySelector (также общесистемный параметр):
// More Cowboy-style! Every thing Google has found says to do it this way!?!?!
ProxySelector.setDefault(new MyProxySelector(HTTPS_PROXY_HOST, HTTPS_PROXY_PORT));
Ни один из них не является разумным выбором, если есть возможность других подсистем, которые хотят получить доступ к веб-серверам через разные HTTP-прокси или без какого-либо прокси. Использование ProxySelector
позволило бы мне настроить, какие соединения используют прокси-сервер, но я должен был бы понять это для каждой вещи в огромном приложении.
Разумный API будет иметь метод, который принял объект java.net.Proxy
, как это делает конструктор java.net.Socket(java.net.Proxy proxy)
. Таким образом, необходимые настройки локальны для той части системы, которая должна быть установлена. Есть ли способ сделать это с помощью JAX-WS?
Я не хочу устанавливать общесистемную конфигурацию прокси.