我正在使用新的spring 3.2异步servlet请求。 一切都很好,除了在这一场景中......
@RequestMapping("/test")
@ResponseBody
public DeferredResult<byte[]> test(InputStream is, HttpServletResponse response, WebRequest request) {
if (someTest()) {
deferredResult.setResult(DATA);
return deferredResult;
}
deferredResult.onTimeout(new Runnable() {
@Override
public void run() {
deferredResult.setResult(DATA);
}
});
// Use deferredResult in another thread when needed
return deferredResult;
}
当someTest()
为真时,spring / tomcat会返回404.我不知道应该怎么做或为什么会这样?我假设可能是因为已经创建了Servlet异步上下文。这是一个错误还是我做错了什么?
任何信息将不胜感激!
答案 0 :(得分:0)
我认为您需要从if条件中删除语句return deferredResult
。
并且setData应该在return语句之后完成。因此,您需要在某个服务器端事件上从单独的线程执行此操作。
希望这会对你有所帮助。