code: private void configureSsl(SocketChannel ch) {
          SslContext sslCtx = SslContextBuilder.build();
          ChannelPipeline pipeline = ch.pipeline();
          pipeline.addLast(sslCtx.newHandler(ch.alloc()));
          // We must wait for the handshake to finish and the protocol to be negotiated before configuring
          // the HTTP/2 components of the pipeline.
          pipeline.addLast(new ApplicationProtocolNegotiationHandler("") {
              @Override
              protected void configurePipeline(ChannelHandlerContext ctx, String protocol) {
                  if (ApplicationProtocolNames.HTTP_2.equals(protocol)) {
                      ChannelPipeline p = ctx.pipeline();
                      p.addLast(connectionHandler);
                      configureEndOfPipeline(p);
                      return;
                  }
                  ctx.close();
                  throw new IllegalStateException("unknown protocol: " + protocol);
              }
          });
      }
docs: Configure the pipeline for TLS NPN negotiation to HTTP/2.