如何在不设置系统范围属性的情况下对 JAX-WS 请求使用 HTTP 代理?
我有一个应用程序需要向Internet上的系统发出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代理或没有任何代理来访问Web服务器,那么这两者都不是明智的选择。使用可以让我配置哪些连接使用代理,但是我必须为大型应用程序中的每一件事弄清楚这一点。ProxySelector
一个合理的API将有一个方法,就像构造函数一样获取对象。这样,必要的设置就位于需要设置它们的系统的一部分的本地。有没有办法用JAX-WS做到这一点?java.net.Proxy
java.net.Socket(java.net.Proxy proxy)
我不想设置系统范围的代理配置。