spring-boot内嵌tomcat场景下,SpringMVC restcontroller接口内调用cse接口如何传递header(上下文)信息
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 30/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- java, spring-boot
- Domínio
- api, backend, distributed-systems
Direção de pesquisa
Comece rastreando o limite entre Spring MVC DispatchServlet e RestServlet e, em seguida, inspecione como RestTemplate lida com a chamada cse://provider/test/health e como InvocationContext é preenchido. Reproduza o fluxo com o cabeçalho x-cse-context do curl contra actuator/health; estará concluído quando o mesmo contexto estiver disponível no health handler CSE downstream.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
场景
集成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);
}
}
请问有什么方案?
- Linguagem predominante
- Java
- Estrelas
- 1.9k
- Forks
- 813
- Merge médio
- 8d 23h
- PRs com merge (30d)
- 1
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de apache/servicecomb-java-chassis
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
apache/servicecomb-java-chassis#5106 ·
-
question
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
apache/servicecomb-java-chassis#5153 · 1 comentário ·
-
[QUESTION] - 请发布3.x的最新版本 Abertaquestion
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
apache/servicecomb-java-chassis#5146 ·
-
[FEATURE] - When will ServiceComb support Spring Boot 4.x, Spring Framework 7.x, and Jackson 3.x? Abertaenhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
apache/servicecomb-java-chassis#5145 ·
-
2.x bug
apache/servicecomb-java-chassis#5141 · 1 responsável ·
Todas as issues de apache/servicecomb-java-chassis
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
objectionary/jeo-maven-plugin#1811 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
hiero-ledger/hiero-block-node#3693 ·
-
area/dependencies kind/cve severity/critical source/scan-dependencies status/triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
-
bug good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
-
proposal
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
beemdevelopment/Aegis#1840 ·