Джава.Асинхронное требование.Как правильно работать с заголовками DeferredResult и http? - PullRequest
0 голосов
/ 10 октября 2018

В Java мы можем использовать запрос асинхронной обработки следующим образом:

public void doGet(HttpServletRequest req, ...) {
req.startAsync(); 

CompletableFuture.supplyAsync(()->{
    ...
    String header = req.getHeader("some - header");

    ... do some work...

    req.asyncContext().asyncContext.getResponse().getWriter().write("some result");
    req.asyncContext().complete();
    ...
}); 

}

Как лучше работать с заголовком при асинхронной обработке и использовании DeferredResult?

Например:

public DeferredResult<ResponseEntity<?>> doGet(String param) {
    DeferredResult<ResponseEntity<?>> result = new DeferredResult();
    CompletableFuture.supplyAsync(() -> {
        //Do some work and try to get header from request
    });
    return result;
}

Если бы я попытался получить заголовок во втором примере из HttpServletRequest, я не получаю его, если асинхронные операции будут слишком длинными, и я не использую HttpServletRequest # startAsync.

Как получить заголовки из запроса, когда я использую операции DeferredResult и async?

Спасибо!

...