首页 > 解决方案 > Java AsyncContext 启动 Runnable

问题描述

我创建了一个 Java servlet,它执行以下操作:

    final AsyncContext aContext = request.startAsync();
        aContext.start(new Runnable() {
            public void run() {
                HttpServletResponse response = (HttpServletResponse) aContext.getResponse();
                try {

                    performRequest(proxyRequest, response);
                } catch (IOException e) {
                    LOGGER.debug("IO Exception: " + e.getLocalizedMessage()); 
                } catch (ServletException e) { 
                    jsonResponse.append("ERROR", "Servlet Exception: " + e.getLocalizedMessage());
                }
                aContext.complete(); 
                responseWriter.print(jsonResponse);
            }
        });

此 servlet 由前端 UI 调用,该 UI 执行 AJAX 调用并传递一些巨大的数据集。java servlet 运行方法 performRequest,这可能需要几分钟(在巨大的数据集上)。我希望 servlet 快速返回(立即触发异步进程),否则 AJAX 承诺会在等待 30 秒后失败。我能做些什么?

标签: javaasynchronousservlets

解决方案


推荐阅读