2017-04-06 79 views
5

:? Understanding Callable and Spring DeferredResultbahar mvc içinde AsyncContext analog var mı (başka bir iş parçacığı http yanıtı yazma) Ben servlet'ten bahar desteği 3.0/3.1 spesifikasyonu hakkında google sahiptir ve bilgilerin çoğunu ben bu makaleye bulduk

Burada yazar, denetleyiciden Callable veya DefferedResult'u döndürebileceğinizi ve ilkbaharda servlet 3.0/3.1'in bakımda olduğunu söyleyebiliriz.

Ama benim durumda bunu nasıl uygulanacağını anlamıyorum:

Ben harici bir sistem var ve asynchrounously bu sistemden sonuç almak. denetleyici olarak

Böyle bir şey yazmak:

externalSystenm.send(requestId, message); 

ve ben sonuç almak nerede başka bir iş parçacığı vardır:

Message m = externalSystem.get(); 
m.getRequestId();// According this id I can map message to request 

ben servlet API ben haritası asyncContext kaydetmenize izin biliyoruz ve sonra onu buldum.

İlkbaharda bunu nasıl başarabilirim?

cevap

3

Ben makalesinde şu bulduk: Spring MVC 3.2 Preview: Introducing Servlet 3, Async Support

örnek:

@RequestMapping("/quotes") 
@ResponseBody 
public DeferredResult<String> quotes() { 
    DeferredResult<String> deferredResult = new DeferredResult<String>(); 
    // Add deferredResult to a Queue or a Map... 
    return deferredResult; 
} 


// In some other thread... <-- important phrase 
deferredResult.setResult(data); 
// Remove deferredResult from the Queue or Map 
+0

Ben kendi soruyu yanıtladı düşünüyorum. mesajı harici sistemden aldığınızda, sadece ertelenmiş Sonuçta ayarlamanız gerekir ve Ertelenmiş Sonuç, iş parçacıkları arasında paylaşılır. Sonuç iş parçacığı ertelenmiş sonuçtaki sonuca ulaştığında yanıt olarak kullanılabilir. –