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