Java:-Dhttps.proxyHost未被使用

时间:2017-05-20 23:22:08

标签: java amazon-web-services tomcat amazon-ec2 proxy

我在EC2上有一个运行在Tomcat上的java应用程序,我希望通过代理到达不同的EC2端点。让我们调用来源https://source.com和目标https://destination.com以及代理https://proxy.com

我的症状如下:

  1. 从我的源服务器点击端点有效:
    • wget destination.com返回一个输出,包括连接到代理,然后以200 ok连接到destination.com
  2. 当我尝试通过源上的API使用邮递员进行呼叫时,我收到以下错误:
  3. org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://destination.com": Connect to destination.com:80 ... connect timed out; nested exception is org.apache.http.conn.ConnectTimeoutException

    我已经完成的事情:

    • 验证是否已导出http和https代理
      • 我将这两个导出为环境变量:
      • http_proxy=http://destination.com:80 https_proxy=http://destination.com:80
    • 验证java_opts是否也包含代理信息:

      • 正在运行ps -ef | grep app_name会返回以下内容:

      • -Dhttp.proxyHost=destination.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=destination.com -Dhttps.proxyPort=80

    即使导出这些信息并在java_opts中设置(在setenv.sh中设置),似乎API没有使用代理到达目的地,因为从服务器,我可以使用wget / curl来覆盖端点通过代理。可能还有其他我错过的原因/位置导致API不使用代理吗?

    我的java版本:java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

    提前致谢。

1 个答案:

答案 0 :(得分:2)

您没有使用Java API。 http[s].proxyHost适用于HttpURLConnection和朋友。您似乎正在使用Apache HTTP客户端,它显然不支持它们。