我正在使用新的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/

10-12 13:26