2014-05-11 45 views
0

我想使用異步解決方案使用Spring MVC控制器方法中的OutputStreamWriter流式傳輸內容,即不阻止用於http請求的基本線程池。據我所能找到的一般是使用DefferedResult<?>作爲異步。當你返回一個視圖字符串名稱時很好,但不能想象它能用於流的方式。找不到有用的東西。Spring 3 MVC,異步流式響應

感謝

+1

那麼你可以嘗試使用WebSocket方法; cliet正在監聽任何事件,並且您只需完成以異步模式流式傳輸內容,然後就可以傳遞給客戶端 –

回答

0

如上所述here你可以在另一個線程從而unloded HTTP線程池進行計算。 您可以嘗試合併DefferedResultbyte[](DefferedResult)返回類型(之前註冊ByteArrayHttpMessageConverter)。所以最終的方法將如下所示:

@ResponseBody 
public DefferedResult<byte[]> foo(HttpServlet response) { 
    //set headers using response 
    response.setContentType("someContentType"); 
    ... 

    DefferedResult<byte[]> r = new DefferedResult<>(); 
    executionService.submit(() -> { 
     r.setResult(getBytes()); 
    }); 
    return r; 
} 

另一種選擇是將Defferedresult和ResponseEntity結合起來。不要忘記在servlet 3.0+容器中使用它