我有一個應用程序需要向Internet上的系統發出SOAP客戶端請求,因此它需要通過我們的HTTP代理。如何在不設置系統屬性的情況下爲JAX-WS請求使用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代理或沒有代理訪問Web服務器,這是一個明智的選擇。使用ProxySelector
可以讓我配置哪些連接使用代理,但我必須在龐大的應用程序中爲每一件事情弄清楚。
一個合理的API將有一個方法需要一個java.net.Proxy
對象,就像java.net.Socket(java.net.Proxy proxy)
構造函數一樣。這樣,必要的設置對於需要設置它們的系統部分是本地的。有沒有辦法用JAX-WS來做到這一點?
我不想設置系統範圍的代理配置。
的'JAXWSProperties'不會出現在我的JDK 1.6中存在。 – jbindel
如果沒有別的東西出現,我會稍後再接受。 – jbindel
您的方法確實有效,我們確實成功實現了它,但我決定使用'HttpsURLConnection.setDefaultSSLSocketFactory()'來支持API和JVM範圍的'SSLSocketFactory'設置。我們將把任何密鑰和證書組合成默認密鑰庫和信任庫的單個版本。 – jbindel