我正在使用新的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()
为true时,spring / tomcat返回404。我不确定该如何处理或为什么会发生这种情况?我认为可能是因为已经创建了Servlet异步上下文。这是一个错误还是我做错了什么?任何信息将不胜感激!
最佳答案
我认为您需要从if条件中删除语句return deferredResult
。
并且setData应该在return语句之后完成。因此,您需要在某些服务器端事件中从单独的线程执行此操作。
希望这对您有帮助。
关于java - Spring DeferredResult setResult导致404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14732724/