JAVA API Servlet异步调用

标签 java servlets asynchronous

我想在 Java API Servlet 中进行异步调用。我在类(class)名列前茅时使用了这个

  @WebServlet(name="asyncServlet2",value = {"/async"},asyncSupported = true,urlPatterns="/async")

我的意图是,由于 API 调用将是一个较长的过程,因此它可以显示该过程是否立即开始,而不是完成时。

我不知道 Java Servlet 3.0 的哪个功能可以让我立即显示该消息。感谢您的帮助!

最佳答案

这取决于预期的响应是什么样的。如果您完全控制响应的外观,那么这应该是可行的。例如:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
    resp.setContentType("text/plain");
    AsyncContext context = req.startAsync();

    // Possibly in another thread:

    // Initiate call to external service.

    resp.getWriter().write("Call initiated OK.\n\n");
    resp.getWriter().flush();

    // Definitely in another thread:

    // Call to external service returns.

    resp.getWriter().write("Result: " + result);
    resp.getWriter().flush();
    context.complete();
}

请注意,即使对外部服务的调用最终可能会失败,响应也会返回 200 OK。

关于JAVA API Servlet异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23431247/

相关文章:

java - 从另一个类追加到 JTextArea

java - Chromecast 按钮在 Android 中不可见

javascript - 函数已定义,但错误提示.. 找不到函数! (奇怪的)

javascript - 等到嵌套的 promise 解决

c# - 从 JSON 数据构建对象?

java - 为什么我们有非静态函数/方法?

java - 如何在 Java 中比较字符串?

java.lang.ClassNotFoundException : org. json.JSONException

java - Singleton 对象和 Java servlet

java - 在现有的大型 Java 代码库中构建测试套件