1

netty バージョン 4 に基づく分析システムと、Tomcat に基づく Web クライアント アプリケーションを開発しています。

Web アプリはユーザーの入力を受け取り、それを分析マシンに送信します。最後に、応答を HTML ページに出力します。

これは、ユーザーの入力を分析ノードに送信するサーブレットのコードです。

protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
String input = request.getParameter("input");
Channel ch = pool.borrowObject();
Protocol.Builder builder = Protocol.newBuilder().setInput(input);
ch.writeAndFlush(builder.build());
}

Netty は非同期で動作するため、http リクエストは送信後に終了します。

これは応答ハンドラのコードです:

@Override
    protected void channelRead0(ChannelHandlerContext ctx, Protocol response)
            throws Exception {
pool.returnObject(ctx.channel());
//How could I code here to display response to the HTML page that user requested?
}

私はここ数週間苦労しています。キューからの応答を取得するまで、http 要求をそこで待機させるために、パブリック スレッド セーフ キューを使用しようとしました。しかし、それによりリクエスト全体が同期になりました。

誰でもこれを行う方法を教えてもらえますか? どうもありがとう!

4

1 に答える 1