4

我有关于 servlet 3.0/3.1 规范的 spring 支持以及我在这篇文章中找到的大部分信息的谷歌: Understanding Callable and Spring DeferredResult

这里作者说你可以从控制器返回Callable或返回DefferedResult,并说它是春季维护的servlet 3.0/3.1。

但我不明白如何在我的情况下应用它:

我有外部系统,我从这个系统异步获得结果。

在控制器中我写了这样的东西:

externalSystenm.send(requestId, message);

我有另一个线程可以得到结果:

Message m = externalSystem.get();
m.getRequestId();// According this id I can map message to request

我知道在 servlet API 中我允许将 asyncContext 保存在地图中,然后找到它。

我怎样才能在春天实现它?

4

1 回答 1

3

我找到了以下文章: Spring MVC 3.2 Preview: Introducing Servlet 3, Async Support

例子:

@RequestMapping("/quotes")
@ResponseBody
public DeferredResult<String> quotes() {
  DeferredResult<String> deferredResult = new DeferredResult<String>();
  // Add deferredResult to a Queue or a Map...
  return deferredResult;
}


// In some other thread...    <-- important phrase
 deferredResult.setResult(data);
// Remove deferredResult from the Queue or Map
于 2017-04-09T13:52:33.313 回答