Spring 带有 Spring RestTemplate 客户端的引导执行器关闭端点:错误 415 不支持的媒体类型
Spring Boot Actuator Shutdown Endpoint with Spring RestTemplate Client: Error 415 Unsupported Media Type
我正在尝试 运行 Spring 引导微服务测试,本文对此进行了解释:
https://blog.codecentric.de/en/2017/02/integration-testing-strategies-spring-boot-microservices-part-2/
在这些测试中,Spring Boot 应用程序在每次测试前后以编程方式启动和停止,使用 Spring RestTemplate 客户端和 Spring Boot Actuator“关闭”端点。
不幸的是,此代码在 Spring Boot 2.3.1 和 returns“错误 415 不支持的媒体类型”
中不起作用
ResponseEntity<JSONObject> response = template
.postForEntity(managementUrl + "/shutdown", "", JSONObject.class);
测试后必须在管理控制台中手动终止应用程序。
完整的源代码可以在 GitLab 上找到:
https://gitlab.com/dfeingol/springboot-testing-tips/-/tree/master/atdd
这是一个非常有趣的测试策略,也是在测试中使用 Spring 启动 Docker 图像的一个很好的替代方法。
可惜文章和源码很老了,用的是SpringBoot 1.4.0
有谁知道如何使用 Spring Boot Actuator“shutdown”端点和 Spring RestTemplate Client 正确关闭 Spring Boot 2.3.1 应用程序?
您缺少HttpHeader,请查看答案:
POST request via RestTemplate in JSON
您还需要启用端点并通过 HTTP 公开它:
management.endpoints.web.expose=*
management.endpoint.shutdown.enabled=true
感谢您的帮助,Umesh Sanwal!
以下代码对我有用:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(null, headers);
ResponseEntity<String> response = template.postForEntity(managementUrl + "/shutdown", entity, String.class);
我能够将文章中的代码更新到最新的 Spring Boot (2.3.1) 和 Cucumber (6.2.2) 并修复了所有测试:
请参阅有关 Spring 启动微服务测试策略的文章:
https://blog.codecentric.de/en/2017/02/integration-testing-strategies-spring-boot-microservices-part-2/
在我的 GitHub 上查看完整的更新代码:
https://github.com/skyglass/skyglass-composer/tree/master/springboot-testing-tips
我正在尝试 运行 Spring 引导微服务测试,本文对此进行了解释: https://blog.codecentric.de/en/2017/02/integration-testing-strategies-spring-boot-microservices-part-2/
在这些测试中,Spring Boot 应用程序在每次测试前后以编程方式启动和停止,使用 Spring RestTemplate 客户端和 Spring Boot Actuator“关闭”端点。
不幸的是,此代码在 Spring Boot 2.3.1 和 returns“错误 415 不支持的媒体类型”
中不起作用ResponseEntity<JSONObject> response = template
.postForEntity(managementUrl + "/shutdown", "", JSONObject.class);
测试后必须在管理控制台中手动终止应用程序。
完整的源代码可以在 GitLab 上找到: https://gitlab.com/dfeingol/springboot-testing-tips/-/tree/master/atdd
这是一个非常有趣的测试策略,也是在测试中使用 Spring 启动 Docker 图像的一个很好的替代方法。
可惜文章和源码很老了,用的是SpringBoot 1.4.0
有谁知道如何使用 Spring Boot Actuator“shutdown”端点和 Spring RestTemplate Client 正确关闭 Spring Boot 2.3.1 应用程序?
您缺少HttpHeader,请查看答案:
POST request via RestTemplate in JSON
您还需要启用端点并通过 HTTP 公开它:
management.endpoints.web.expose=*
management.endpoint.shutdown.enabled=true
感谢您的帮助,Umesh Sanwal!
以下代码对我有用:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(null, headers);
ResponseEntity<String> response = template.postForEntity(managementUrl + "/shutdown", entity, String.class);
我能够将文章中的代码更新到最新的 Spring Boot (2.3.1) 和 Cucumber (6.2.2) 并修复了所有测试:
请参阅有关 Spring 启动微服务测试策略的文章: https://blog.codecentric.de/en/2017/02/integration-testing-strategies-spring-boot-microservices-part-2/
在我的 GitHub 上查看完整的更新代码: https://github.com/skyglass/skyglass-composer/tree/master/springboot-testing-tips