我怎么会通过一个HTTP请求显示异步结果在HTML页面?(How could I display t

2019-10-18 18:40发布

我基于网状版本4,和基于Tomcat上的Web客户端应用程序开发的分析系统。

Web应用程序接受用户的输入,然后将其发送到分析机。 最后打印在HTML页面的响应。

这是在发送用户的输入,以分析节点的servlet代码:

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());
}

网状异步工作,所以在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?
}

我一直在这里奋斗了几个星期。 我试图用一个公共THEAD安全的队列来进行HTTP请求等待,直到得到了队列的响应。 但是,这使得整个申请成为同步。

谁能告诉如何在这做什么? 非常感谢!

Answer 1:

这里的问题是,默认的servlet请求生命周期是同步的。 你要在servlet容器中解决这个问题的唯一办法就是要利用servlet的3.0异步请求处理。 这样,您就可以通过请求的Netty和回报,然后写入响应异步到达时。

一些链接帮助你开始

的Java Servlet 3.0异步支持

如何使用异步servlet来提高性能



文章来源: How could I display the asynchronous result in HTML page through a HTTP request?
标签: netty