Java 池连接不存在';当使用hibernate-envers并获取历史记录时,您是否没有免费连接?

Java 池连接不存在';当使用hibernate-envers并获取历史记录时,您是否没有免费连接?,java,hibernate,hibernate-envers,Java,Hibernate,Hibernate Envers,spring4+jaxb+jpa+hibernate上有一个应用程序,envers在websphere+oracle11g上工作 有两种java方法,它们可以获取用户实体的历史记录: 方法getHistoryUser从rest-controller调用,该方法查找一个id的所有版本,并从使用此id和版本的所有基本用户处读取。 extractUsers-只需将JPA-enities映射到字符串 我在WebSphereJDBC资源上使用了base和poolConnection-param的参数。默认

spring4+jaxb+jpa+hibernate上有一个应用程序,envers在websphere+oracle11g上工作

有两种java方法,它们可以获取用户实体的历史记录: 方法getHistoryUser从rest-controller调用,该方法查找一个id的所有版本,并从使用此id和版本的所有基本用户处读取。 extractUsers-只需将JPA-enities映射到字符串

我在WebSphereJDBC资源上使用了base和poolConnection-param的参数。默认情况下,最大可用池连接数为10。 我在这个值上有一个EEOR-服务没有响应,所有连接都被中断。。 我可以对40个池连接使用变通方法,而且效果很好

当客户端调用getHistoryUser方法时-我没有可用的连接,您能帮助我并说明原因吗

public String getHistoryUser(String id) {
        logger.log(Level.INFO, "get history id=" + id);
        AuditReader auditReader = AuditReaderFactory.get(entityManagerFactory.createEntityManager());

        List<Number> auditVersions = auditReader.getRevisions(UserRecord.class, id);
        List<UserRecord> userRecords = auditVersions.stream().map(item -> {
            UserRecord elem = auditReader.find(UserRecord.class, id, item.intValue());
            elem.setVersion(item.intValue());
            return elem;
        }).collect(Collectors.toList());

        StringBuilder result = new StringBuilder();
        extractUsers(UserRecords).stream().forEach(item -> {
            result.append(item);
        });
        return result.toString();
    }



    private List<String> extractUsers(List<UserRecord> userRecords) {
        logger.log(Level.INFO, "extractUserRecords..");
        if (CollectionUtils.isEmpty(userRecords) || userRecords.stream().allMatch(x -> x == null)) {
            return new ArrayList<>();
        }

        return riskMetricRecords.stream().map(userRecord -> {
            String userRecord = (String) deserialize(userRecord.getUser());
            return appendMetaInfoInEntity(user, "<User>", userRecord.getPrKey(), Integer.toString(userRecord.getVersion()));
        }).collect(Collectors.toList());
    }

您是否尝试关闭entityManager

大概是这样的:

EntityManager entityManager = entityManagerFactory.createEntityManager();
AuditReader auditReader = AuditReaderFactory.get(entityManager);
...
entityManager.close();
我也有同样的问题

EntityManager entityManager = entityManagerFactory.createEntityManager();
AuditReader auditReader = AuditReaderFactory.get(entityManager);
...
entityManager.close();