У меня есть следующий метод контроллера:
@Transactional
@PostMapping(path = "/add")
@Secured({Constants.ADMIN, Constants.DATAMANAGER})
public DeferredResult<ResponseEntity> addNewCitizens(
@RequestBody List<Citizen> citizens) {
// Time out in 30 minutes
DeferredResult<ResponseEntity> output = new DeferredResult<>((long) (1000 * 60 * 30));
ForkJoinPool.commonPool().submit(() -> {
// Long operation...
output.setResult(new ResponseEntity(HttpStatus.OK));
}
return output;
}
Метод обычно получает много данных и использует их для обновления моей базы данных. Для данных, с которыми я сейчас тестирую, это занимает 3-4 минуты.
По какой-то причине, когда для обработки запроса требуется некоторое время, он запускается заново, когда он завершается один раз, как если бы он получил другой запрос. Приложение Angular, от которого я отправил запрос, никогда не получает ответ в этом случае. Для быстрых запросов это работает отлично. Кроме того, я проверил вкладку сети в Chrome и вижу только один запрос, отправляемый на конечную точку.
Что может быть причиной, и что я могу сделать, чтобы это исправить? Спасибо!
Дополнительная информация: это происходит только при развертывании службы на удаленном сервере, а не при тестировании на локальном компьютере ...