spring-boot - Spring Boot 应用程序,RestTemplate 没有选择在 Java 选项中配置的代理
问题描述
有一些服务托管在互联网上。我的应用程序 Spring Boot 服务部署在 K8S 集群中。集群位于公司防火墙后面。当集群中部署的服务尝试与托管在 Internet 中的服务进行通信时,我是 OperationTimeOutException。REST 调用通过 RestTemplate 发生,在某些情况下它通过 feign 发生。无论哪种情况,它都不起作用。
当我启动微服务时,我提供了提供代理配置的 java 选项。
java -Dhttp.proxyHost= -Dhttp.proxyPort= -Dhttps.proxyHost= -Dhttps.proxyPort= myapp.jar
当我在创建 RestTemplate 时对代理进行硬编码时,如下所示,
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
InetSocketAddress address = new InetSocketAddress(host,portNr);
Proxy proxy = new Proxy(Proxy.Type.HTTP,address);
factory.setProxy(proxy);
restTemplate.setRequestFactory(factory);
通信发生并且应用程序按预期工作。为什么 RestTemplate 无法选择 Java 选项中提供的代理设置?
我不想在代码中硬编码代理。
解决方案
推荐阅读
- ios - 按下按钮时,用户默认在 TableView 中保存单元格
- episerver - 在 EpiServer 中使用预先输入创建多选
- merge - 使用一个栅格图层和一个 shapefile(多边形)计算面积
- algorithm - 二部图中的匹配算法
- postgresql - Postgres:只能超级用户和所有者进行备份/转储吗?
- java - Spring Security Annotation @EnableWebSecurity 在 Spring MVC 项目中不起作用
- javascript - Ajax POST 请求有时会在 chrome 中发送空数据
- python - 如何在 func1 继续运行和返回时在 func1 中调用 func2?
- if-statement - 将多个“COUNTIF”公式组合到一个语句中
- google-cloud-platform - GCP 中的新 Pub/Sub 主题 wrt 设备?