有没有办法检查AsyncContext是否完成了异步ServletRequest?我看到春天有某种wrapper that supports this但谷歌搜索我在标准库中找不到任何东西。这就是我所希望的。
我正在使用Tomcat 7.
答案 0 :(得分:2)
听起来像两个中的一个 - 你需要一个监听器,它将在异步请求完成后调用,或者你不需要使用异步调用。
你的问题有点过于笼统。
通常说话 - 当呼叫者对呼叫的直接结果不感兴趣时,使用异步呼叫。 如果呼叫者有兴趣立即知道呼叫结果,则应使用同步呼叫。 如果调用者不想立即知道结果(例如它具有次要优先级,如登录某些业务应用程序),但是应该在执行异步调用时执行某些操作,您应该使用某种监听器。
异步调用所需要的是一些侦听器(类javax.servlet.AsyncListener)。
在侦听器中,您将确定异步调用已结束(onComplete方法)并可执行某些操作以完成/补充异步调用强>
同样,如果您看到请求的调用者需要立即知道结果,那么您的体系结构可能存在错误。你应该使用同步通话 - 只要等到通话结束,你就会得到它的结果。在这种情况下,使用异步调用是错误的。
我看到人们如何使用某种循环来不时检查异步调用的结果,但看起来在99.99%的情况下这种方法是某种架构的结果错误。
答案 1 :(得分:1)
您可以注册AsyncListener,它可以实现onComplete()方法。
需要将AsyncListener添加到AsyncContext。