gpt4 book ai didi

tomcat - 仅在开发中为 Tomcat webapp 设置代理服务器

转载 作者:行者123 更新时间:2023-11-28 22:26:54 24 4
gpt4 key购买 nike

我可以控制或配置部署在 Tomcat 中的单个 Web 应用程序的代理服务器信息吗?在工作中,我在公司防火墙后面,所以任何访问外部 Web 资源的代码(在我的例子中是第 3 方 REST API)只有在我在执行环境中设置代理信息时才能工作:

System.setProperty("https.proxyHost", "proxy.company.com");
System.setProperty("https.proxyPort", "2345");

但是我不想在代码中包含这个,因为生产环境不涉及代理服务器。

如何外部化此配置,以便我可以在开发环境中设置代理服务器配置/标志,但跳过生产环境中的步骤?无论解决方案是什么,它都应该只影响特定的 Web 应用程序,而不是 Tomcat 服务器上的所有 Web 应用程序。

2016 年 11 月 21 日编辑:我正在使用 Spring 的 RestTemplate 调用 REST API 方法。

@RequestMapping(value="/{userId}",
method = RequestMethod.GET)
public ResponseEntity<String> getUserInfo(@PathVariable String userId,
@RequestHeader String apikey) {

String url = UserAPIProperties.getUsersUrl() + "/users/{userId}";

// Set headers for the request
Map<String,Object> headersMap = new HashMap<String,Object>();
headersMap.put("apiKey", apiKey);
headersMap.put("Accept", "application/json");
HttpEntity<?> httpEntity = getHttpEntity(headersMap);

log.debug("API Key: {}, User ID: {}", apikey, userId);

RestTemplate restTemplate = new RestTemplate();
return restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class, userId);
}

最佳答案

不要使用系统属性执行此操作。

而是使用 REST API 的实际 API 直接设置代理信息。否则,您将影响整个 JVM,这可能不是您想要的。

因为您使用的是 Spring 的 RestTemplate,所以这个 SO 答案应该可以帮助您以编程方式更改正在使用的代理:

关于tomcat - 仅在开发中为 Tomcat webapp 设置代理服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40671350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com