spring mvc中是否有AsyncContext的模拟?(如何在另一个线程中编写http响应)
Is there analog of AsyncContext in spring mvc?(how to write http response in another thread)
我 google 关于 spring 对 servlet 3.0/3.1 规范的支持以及我在本文中找到的大部分信息:
Understanding Callable and Spring DeferredResult
这里作者说你可以 return Callable
或 DefferedResult
来自控制器并说它是 servlet 3.0/3.1 维护在 spring.
但我不明白如何在我的情况下应用它:
我有外部系统,我从该系统异步获取结果。
在控制器中我写了这样的东西:
externalSystenm.send(requestId, message);
我还有另一个线程可以得到结果:
Message m = externalSystem.get();
m.getRequestId();// According this id I can map message to request
我知道在 servlet 中 API 我允许在 map 中保存 asyncContext 然后找到它。
如何在 spring 中实现?
我找到了以下文章:
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
我 google 关于 spring 对 servlet 3.0/3.1 规范的支持以及我在本文中找到的大部分信息: Understanding Callable and Spring DeferredResult
这里作者说你可以 return Callable
或 DefferedResult
来自控制器并说它是 servlet 3.0/3.1 维护在 spring.
但我不明白如何在我的情况下应用它:
我有外部系统,我从该系统异步获取结果。
在控制器中我写了这样的东西:
externalSystenm.send(requestId, message);
我还有另一个线程可以得到结果:
Message m = externalSystem.get();
m.getRequestId();// According this id I can map message to request
我知道在 servlet 中 API 我允许在 map 中保存 asyncContext 然后找到它。
如何在 spring 中实现?
我找到了以下文章: 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