Spring DeferredResult setResult导致404

时间:2013-02-06 15:32:05

标签: java spring spring-mvc

我正在使用新的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异步上下文。这是一个错误还是我做错了什么?

任何信息将不胜感激!

1 个答案:

答案 0 :(得分:0)

我认为您需要从if条件中删除语句return deferredResult

并且setData应该在return语句之后完成。因此,您需要在某个服务器端事件上从单独的线程执行此操作。

希望这会对你有所帮助。