Spring gRPC @ExceptionHandler 使用过时的上下文生成

问题描述 投票:0回答:1

我正在使用 Spring Boot gRPC,并遇到了我设置的上下文(我在 @ServerInterceptor 中准备的)未在 @GrpcAdvice ExceptionHandler 的异常中使用的问题。它处理第 5 代 Context.current(),而我则使用第 6 代上下文拦截所有传入呼叫,其中我已准备好用户的元数据。 服务方法也可以与Context.current()

第6代
一起工作,并且可以访问准备好的元数据,但异常处理程序不能

如何告诉我的 ExceptionHandler 使用最新的上下文生成(应该是 6 而不是 5)?

我已经尝试在 ExceptionHandler 中使用新的

Context.current()
调用来获取最新版本,但它仍停留在第 5 代。

Context.current().fork()
也创建了新一代(第6代),但其内容与我的拦截器上下文第6代完全不匹配。

spring-boot grpc-java exceptionhandler
1个回答
0
投票

我刚刚发现我可以使用

@Order
注释来设置自己的建议订单。将
@Order(0)
放在服务器拦截器上方,将
@Order(1)
放在异常处理程序上方会导致所需的行为,即拦截器在到达异常处理程序之前准备上下文:)

© www.soinside.com 2019 - 2024. All rights reserved.