spring-boot内嵌tomcat场景下,SpringMVC restcontroller接口内调用cse接口如何传递header(上下文)信息
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- java, spring-boot
- Área
- api, backend, distributed-systems
Línea de trabajo
Empieza siguiendo el límite entre Spring MVC DispatchServlet y RestServlet; después inspecciona cómo RestTemplate gestiona la llamada cse://provider/test/health y cómo se rellena InvocationContext. Reproduce el flujo con el encabezado x-cse-context de curl contra actuator/health; estará hecho cuando el mismo contexto esté disponible en el handler de salud CSE descendente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
场景
集成spring-boot-actuator组件,业务通过curl命令调用actuator/health接口检测服务状态,业务自定义AbstractHealthIndicator里面调用cse的health接口,代码如下:
@Component
public class HealthChecker extends AbstractHealthIndicator {
@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
RestTemplate restTemplate = RestTemplateBuilder.create();
String result = restTemplate.getForObject("cse://provider/test/health", String.class);
if ("UP".equals(result)) {
builder.up().withDetail("cseState", "UP");
} else {
builder.down().withDetail("cseState", "DOWN");
}
}
}
curl命令:携带x-cse-context header信息
curl -ki -H 'x-cse-context: {"x-biz-tenantId": "1002"}' http://localhost:9093/provider/actuator/health
期望
在provider/test/health 这个cse接口内可以通过handler在invocationcontext中获取到'x-cse-context: {"x-biz-tenantId": "1002"}' 信息。
现状
由于actuator组件的endpoint接口是由Spring MVC的DispatchServlet处理的,而cse接口是由RestServlet处理的,这个header信息无法带过来,但是是处于同一条调用链中。
其实,任何restcontroller接口调用cse接口都无法传递header信息, 我们希望在前台设置header上下文,调用rest接口的时候,将这个上下文传递到cse接口中
@RestController("/")
public class HelloController {
@GetMapping("/hello")
public String hello(){
RestTemplate restTemplate = RestTemplateBuilder.create();
return restTemplate.getForObject("cse://provider/test/health", String.class);
}
}
请问有什么方案?
- Lenguaje dominante
- Java
- Estrellas
- 1.9k
- Forks
- 813
- Merge medio
- 8 d 23 h
- PR fusionados (30 d)
- 1
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/servicecomb-java-chassis
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
apache/servicecomb-java-chassis#5106 ·
-
question
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
apache/servicecomb-java-chassis#5153 · 1 comentario ·
-
[QUESTION] - 请发布3.x的最新版本 Abiertoquestion
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
apache/servicecomb-java-chassis#5146 ·
-
[FEATURE] - When will ServiceComb support Spring Boot 4.x, Spring Framework 7.x, and Jackson 3.x? Abiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apache/servicecomb-java-chassis#5145 ·
-
2.x bug
apache/servicecomb-java-chassis#5141 · 1 asignado ·
Todos los issues de apache/servicecomb-java-chassis
Issues similares
-
area-deployment area-integrations triage:bot-seen
Dificultad 2/5 Medio día Aptitud para principiantes 86/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apache/flink-agents#1156 ·
-
[source-shopify] FAILED bulk operation without partialDataUrl is silently treated as successful Abiertoarea/connectors autoteam community connectors/source/shopify needs-triage team/use type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100