JPA EntityManager close () не освобождает соединение с пулом? - PullRequest
0 голосов
/ 24 июня 2019

Я использую репозитории JPA, также использую программное управление транзакциями в моем коде следующим образом

public class PipelineJobProcessor {

     @Autowired
    private EntityManagerFactory emf;

    @Autowired
    private PipelineJobRepository pipelineJobRepository; //JPA repository

    @Transactional
    public void someMethod () {
        ..
        pipelineJobRepository.save(entity);
    }

    .
    .
    //Manual transaction management
    private void savePipelineJob(PipelineJob pipelineJob) {
        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            pipelineJobRepository.save(pipelineJob);
            tx.commit();
        } catch (Exception e) {
            tx.rollback();
            throw e;
        } finally {
            em.close();
        }

    }
}

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

Какие-нибудь советы по этому поводу?

org.springframework.transaction.CannotCreateTransactionException: Не удалось открыть JPA EntityManager для транзакции; вложенное исключение org.hibernate.exception.JDBCConnectionException: невозможно получить Соединение с JDBC на org.springframework.orm.jpa.JpaTransactionManager.doBegin (JpaTransactionManager.java:446) в org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction (AbstractPlatformTransactionManager.java:378) в org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary (TransactionAspectSupport.java:474) в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction (TransactionAspectSupport.java:289) в org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:98) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:186) в org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke (PersistenceExceptionTranslationInterceptor.java:139) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:186) в org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor $ CrudMethodMetadataPopulatingMethodInterceptor.invoke (CrudMethodMetadataPostProcessor.java:138) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:186) в org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke (ExposeInvocationInterceptor.java:93) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:186) в org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke (SurroundingTransactionDetectorMethodInterceptor.java:61) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:186) в org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:212) на com.sun.proxy. $ Proxy126.save (неизвестный источник) на com.company.dps.dataplatform.pipeline.generator.PipelineJobProcessor.savePipelineJob (PipelineJobProcessor.java:182)

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