Джава. Асинхронное требование. Как правильно работать с заголовками DeferredResult и http?

В 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 и асинхронные операции?

Спасибо!

0 ответов

Другие вопросы по тегам