У меня есть приложение, которое должно сделать запрос клиента 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?
Я не хочу устанавливать общесистемную конфигурацию прокси.