我想在 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/