Как я могу быть уверен, что сессия Oracle была закрыта? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть проект 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.

1 Ответ

0 голосов
/ 15 мая 2018

Вопрос: что происходит с сервером, когда клиент умирает?Соединение с Oracle остается активным.

В Oracle есть процесс проверки, сконфигурированный SQLNET.EXPIRE_TIME (в минутах).Установка значения больше 0 (по умолчанию) гарантирует, что соединения не останутся открытыми на неопределенный срок из-за ненормального завершения клиента.

Возможно, это могло бы пролить свет на вопрос: https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2233109200346833212.

Является ли IOException предупреждением в вашем журнале?Если нет, возможно, вам нужно перехватить это исключение и записать некоторую информацию об отключении клиента!?

...