Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GRPC拦截器如何从消息中提取数据并相互传递?_Java_Interceptor_Grpc - Fatal编程技术网

Java GRPC拦截器如何从消息中提取数据并相互传递?

Java GRPC拦截器如何从消息中提取数据并相互传递?,java,interceptor,grpc,Java,Interceptor,Grpc,我有2个GRPC拦截器: #1从消息中提取一些数据 #2验证数据,如果无效,则关闭带有错误的调用 拦截器#1如何从消息中提取一些数据,将其放入上下文并调用拦截器#2(使用上下文.拦截器调用(上下文,调用,标题,下一步)和修改的上下文实例) 问题是我无法访问覆盖中的消息 <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall( ServerCall<ReqT, RespT> call,

我有2个GRPC拦截器:

#1从消息中提取一些数据

#2验证数据,如果无效,则关闭带有错误的调用

拦截器#1如何从消息中提取一些数据,将其放入
上下文
并调用拦截器#2(使用
上下文.拦截器调用(上下文,调用,标题,下一步)
和修改的
上下文
实例)

问题是我无法访问覆盖中的消息

<ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
      ServerCall<ReqT, RespT> call,
      Metadata headers,
      ServerCallHandler<ReqT, RespT> next)
private Object msg;
private <ReqT, RespT> ServerCall.Listener<ReqT> interceptCallAfterMessage(
        final ServerCall<ReqT, RespT> call,
        Metadata headers,
        ServerCallHandler<ReqT, RespT> next) {
      Context context = Context.current().withValue("msg", msg); // error: msg is not yet extracted !
      return Contexts.interceptCall(context, call, headers, next);
}
...
new ForwardingServerCallListener.SimpleForwardingServerCallListener(
    interceptCallAfterMessage(call, headers, next)) { // happens first
    @Override
    public void onMessage(Object message) {
        msg = message; // happens second
        super.onMessage(message);
    }
};