1

(Axis クライアントを使用して) 外部 Web サービスに接続する必要がある Web アプリがあります。私は2つのことを実行する必要があります:

  • Web アプリケーションが特定の HTTP プロキシを使用して外部と通信できるようにする (WS クライアントを承認するため)
  • 次のようなURIを介してローカル呼び出しを実行するときに直接接続を使用します

    http://localhost:7001/webApp/getImg?id=22

ProxySelector の代わりにシステム プロパティ (http.proxyHost など) を使用すると、魅力的に機能することに注意してください。

しかし、すべてのローカル コールが Proxy Server にルーティングされますが、これは望ましくありません。

簡単な質問ProxySelectorですが、プロキシ システム プロパティを使用する場合と同じように機能する を実装するにはどうすればよいでしょうか。

4

1 に答える 1

0

も設定することにより、システムプロパティでこれを実現できますhttp.nonProxyHosts=localhost。でやりたい場合は、ProxySelectorこのようなことを試してください

final Proxy PROXY = new Proxy(Proxy.Type.HTTP,
  new InetSocketAddress("my.proxy.server", 8080));
ProxySelector.setDefault(new ProxySelector() {
  public List<Proxy> select(URI u) {
    if(u != null && !"localhost".equals(u.getHost())) {
      return Arrays.asList(PROXY, Proxy.NO_PROXY);
    }
    else {
      return Collections.singletonList(Proxy.NO_PROXY);
    }
  }

  public void connectFailed(URI u, SocketAddress sa, IOException e) {
    // do nothing
  }
});
于 2013-02-26T13:09:17.903 に答える