У меня есть проект Angular, который вызывает REST API в Spring.В Angular я использую класс Observable
для получения объекта Subscribe при запросе API:
this.currentSubs =
this.entity0.post(arg0, arg1, arg2)
.subscribe((res: any) => {
//logic here
}, (err: HttpErrorResponse) => {
//Error logic here
});
Мой API занимает 40 с-2 мин, чтобы вернуть ответ, и у меня нет доступаизменить сложность или количество времени, необходимое для выполнения этого запроса.Я реализовал кнопку отмены, которая вызывает это в Angular:
this.currentSubs.unsubscribe();
И когда я отменяю, используя этот код, я получаю это исключение на сервере:
java.io.IOException: An established connection was aborted by the software in your host machine.
Поскольку я использую Spring@RestController
, @Repository
и StoredProcedure
, мне бы хотелось, чтобы я мог заверить, что закрываю все сессии по этому запросу REST.Поскольку я использую Oracle, я мог бы использовать
SELECT username FROM v$session
WHERE username IS NOT NULL
ORDER BY username ASC;
Но так как это приложение с общей базой данных, я не единственный, кто его использует.Поскольку я выполняю процедуру, я знаю, что если сеанс завершен на полпути, все незафиксированные данные будут откатываться.Меня беспокоит количество открытых сессий / соединений с Oracle.