У меня есть ситуация, когда мне нужно вызывать параллельные http-запросы для получения данных. Я использовал CompletableFuture для получения данных, как показано ниже.
Generictype model = CompletableFuture.supplyAsync(() -> {
return lookupService.fetchData(token);
}, taskExecutor)
Проблема в том, что я передаю токен доступа, который имеет очень короткий период, скажем, 60 секунд после истечения срока его действия.
ЕслиСрок действия токена истекает. Мне нужно вызвать другую службу, чтобы получить токен обновления, и повторить тот же запрос с этим новым токеном.
Как я могу справиться с ситуацией, когда срок действия токена истекает между параллельными вызовами.
Я пытаюсь сделать так, чтобы по истечении срока действия маркера доступа было выдано исключение UnAuthorized 401.
Я пытаюсь перехватить исключение в блоке исключительных ситуаций CompletableFuture, как показано ниже.
Generictype model = CompletableFuture.supplyAsync(() -> {
return lookupService.fetchData(token);
}, taskExecutor)
.exceptionally(exception -> {
String newToken = lookupService.getNewToken(token);
model = lookupService.fetchData(newToken);
return model;
});
Когда я получаю исключение, он входит в блок исключения, но запрос не выполняется должным образом. Он отвечает 302 ответом SAMEORIGIN.
Это правильный способ обработки этой ситуации илиЕсть ли другой способ, чтобы я мог повторить запрос, когда токен доступа истек