如何在异步servlet中实现AsyncListener/ReadListener/WriteListener.onError?

h2s*_*ein 5 java asynchronous servlets

所述的Servlet 3.1 API定义了一个异步的servlet API,它下降到执行接口AsyncListener,WriteListener和ReadListener.所有这些都有一个onError回调,但我找不到有关此回调的错误条件和预期行为的任何有用信息.

在一个示例中,作者在onError回调中完成了AsyncContext:

public void onError(final Throwable t) {
    ac.complete();
    t.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

有什么异常servlet在发生错误时应该做的最佳实践吗?

有趣的是,如果HTTP请求被客户端中止(使用Jetty 9.1.3测试),则不会调用onError处理程序.但是,在这种情况下,这里似乎存在内存泄漏,因为WriteListener似乎没有被清除.只有ReadListener和AsyncListener实例在调用System.gc()时才会看到finalize()调用(用于测试).