В REST-приложении с весенней загрузкой. С учетом RestController
метода, помеченного @Transactional
, когда сервер обрабатывает запрос и возвращает действительный ответ клиенту. Однако клиент не может получить ответ из-за истечения времени ожидания запроса (пример: плохое соединение inte rnet).
Что происходит с транзакцией? Это зафиксировано или откат?
Есть ли способ откатить транзакцию в этом сценарии?
Пример:
@PostMapping(path = "/orders")
@Transactional
public String saveOrderInTransaction(@RequestBody Order order) {
// Business logic
return "Order saved";
}
Я предполагаю, что @Transactional
фиксируется, когда saveOrderInTransaction()
возвращается. Позже контейнер сервлетов (Tomcat) пишет в протокол, который является 3: Сервер: Напишите на диаграмме ниже.
Если это правильно, то я предполагаю, что клиент может получить тайм-аут запроса и не знать, что сервер обработал свой запрос. Верны ли мои предположения? Можно ли выполнить коммит только тогда, когда клиент подтвердит ответ?
Пожалуйста, пришлите мне ссылки с вашими ответами.