1

有没有办法检查异步 ServletRequest 是否从AsyncContext完成?我看到spring有某种支持这一点的包装器,但是谷歌搜索我在标准库中找不到任何东西。这就是我所希望的。

我正在使用Tomcat 7。

4

2 回答 2

3

听起来像是两者之一 - 您要么需要一个将在异步请求完成时调用的侦听器,要么您不需要使用异步调用

你的问题有点太笼统了。

一般说 -当调用者对调用的即时结果不感兴趣时​​,使用异步调用。如果调用者有兴趣立即知道调用的结果,那么应该使用同步调用。如果调用者不想立即知道结果(例如它具有次要优先级,例如登录某些业务应用程序),但应该在异步调用执行结束时执行一些操作,则应该使用某种监听器。

异步调用需要的是一些监听器(类 javax.servlet.AsyncListener)。

侦听器中,您将确定异步调用结束(onComplete 方法)并可能执行一些操作来完成/补充异步调用


同样,如果您看到请求的调用者需要在完成后立即知道结果,那么您的架构中可能存在错误。您应该使用同步调用 - 只需等到调用完成,您就会得到它的结果。在这种情况下使用异步调用是错误的。


我看到人们如何使用某种循环来不时检查异步调用的结果,但在 99.99% 的情况下,这种方法似乎是某些架构错误的结果。

于 2013-03-16T07:30:42.363 回答
1

您可以注册可以实现 onComplete() 方法的 AsyncListener。

AsyncListener 需要添加到 AsyncContext。

于 2013-03-16T12:33:38.670 回答