Servlet规范可以为商业或开源的Servlet容器实现提供参考,好处是我们可以有很多的Servlet容器可以选择,坏处是限制了Java Web开发的想象力。其实我们真的需要那么多的Servlet容器吗?我想这也是Play Framework不支持Servlet规范的原因之一。脱离了Servlet,异步其实很简单,这是Play中的异步Action代码:
def index = Action.async {
// 执行业务操作(可以选择在业务线程池上执行)
val asyncTask = Future { do heavy work... }
// 将执行结果转换成Http Result写回给客户端
asyncTask.map{ result => Ok("Result is" + result) }
}