来自Java servlet的异步任务

zod*_*d90 7 java multithreading web-services servlets jax-rs

我需要在调用RESTful Web服务端点时执行异步任务.实际上,要求端点通过POST操作执行一系列工作.它应该立即向调用者返回200 OK,生成一个线程并执行它的资源密集型任务.完成后,线程将POST到调用者(另一个REST服务器)上的相应端点,指示成功(传递表示初始事务请求的令牌).

在我应该注意的servlet中执行异步操作的最佳实践方法是什么?

Boz*_*zho 8

Servlet 3.0支持异步操作.Tomcat 7.0已经稳定,因此您可以获得它并尝试新功能.

如果您不需要连续输出数据,而只需启动后台进程,那么您可以使用任何可用的异步机制:


Mat*_*ard 5

除了 Java 中异步编码的复杂性之外,RESTful Web 服务中的另一个“最佳实践”是使用 HTTP 状态代码尽可能准确地描述服务器的响应。除非您有令人信服的理由坚持使用 200(即您无法更改的客户端期望这一点),否则您应该返回HTTP 202

202 接受

请求已被接受进行处理,但处理尚未完成。