Как я могу использовать прокси-сервер HTTP для запроса JAX-WS без установки общесистемного свойства?

У меня есть приложение, которое должно сделать запрос клиента 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?

Я не хочу устанавливать общесистемную конфигурацию прокси.

33
задан Tommy Herbert 16 October 2013 в 08:24
поделиться