【发布时间】:2011-09-20 18:52:36
【问题描述】:
我有一个应用程序需要向 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 应该有一个像 java.net.Socket(java.net.Proxy proxy) 构造函数一样接受 java.net.Proxy 对象的方法。这样,必要的设置对于需要设置它们的系统部分来说是本地的。有没有办法用 JAX-WS 做到这一点?
我不想设置系统范围的代理配置。
【问题讨论】:
-
为什么要在一台服务器上拥有多个代理?
标签: java http soap proxy jax-ws