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