Java:-Dhttps.proxyHost 未被使用

标签 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 使用 postman 进行调用时,出现以下错误:

org.springframework.web.client.ResourceAccessException:“http://destination.com”的 GET 请求上的 I/O 错误:连接到 destination.com:80 ... 连接超时;嵌套异常是 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 版本“1.8.0_91” Java(TM) SE 运行时环境(build 1.8.0_91-b14) Java HotSpot(TM) 64 位服务器 VM(构建 25.91-b14,混合模式)

提前致谢。

最佳答案

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

关于Java:-Dhttps.proxyHost 未被使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091715/

相关文章:

java - Spring MVC 非法状态异常将初始化 Web 应用程序上下文

java - 如何在 Java 中实现类似 DAG 的调度器?

java - C++ 中结构和指针的语法等同于 Java

Java8 Javascript Nashorn 异常 : no current Global instance for nashorn

java - 使用 json-schema-validator-2.2.6 时出现异常 java.lang.NoClassDefFoundError

amazon-web-services - 使用 Amazon AWS 作为开发服务器。

jsf - 在 JSF 中使用自定义 URL 扩展

带有不可公开访问的 RDS 的 MySQL Workbench AWS EC2

amazon-web-services - S3 和 CloudFront 网站托管用于多个 SPA 根据 url 路径重定向到不同的 index.html

tomcat - Grails 自定义错误页面 (500) 和 Tomcat