hibernate с spring-boot не освобождает соединение после org.hibernate.ScrollableResults - PullRequest
0 голосов
/ 18 апреля 2019

Доброе утро всем,

У меня есть конечная точка Soap, созданная с помощью SpringBoot 1.5.8.RELEASE (Java 8), которая подключается к базе данных ORACLE12C и возвращает некоторые наборы данных. Для некоторых методов я использовал JpaRepository, в то время как для других запросов я создал запрос через javax.persistence.criteria.CriteriaBuilder, экземпляр которого был создан с помощью javax.persistence.EntityManager.getCriteriaBuilder () (EntityManager - @Autowired через spring).

Я заметил, что после превышения 100 запросов пул соединений перестал устанавливать соединения ( [http-nio-80-exec-4] Тайм-аут: пул пуст. Невозможно получить соединение за 30 секунд, недоступно [размер: 100; занято: 100; бездействует: 0; последнее ожидание: 30000]. ) в конкретном случае: случай, когда было выполнено 100 запросов с использованием объекта типа org. hibernate.ScrollableResults.

ScrollableResults scroll = em.createQuery(cq).setHint(QueryHints.HINT_FETCH_SIZE, max).unwrap(org.hibernate.Query.class).scroll(ScrollMode.FORWARD_ONLY);
List<Document> list = new ArrayList<>(max);
for (int i = 0; scroll.next() && i < max; i++) {
    list.add((Document) scroll.get(0));
}
scroll.close();

после прочтения некоторых примеров и документации, которые не привели к решению, я провел тест, пытаясь перевести код следующим образом:

List<Document> list = em.createQuery(cq).setFirstResult(0).setMaxResults(max).getResultList();

и все работает отлично; однако мне нужно сохранить режим «прокрутки», и все различные эксперименты провалились.

Я безуспешно пытался поиграть со свойствами "spring.datasource.tomcat".

Может кто-нибудь мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...