Приложение на spring4+jaxb+jpa+hibernate-envers работающие с websphere и oracle11g
Два java-метода, которые нужны для получения истории изменения сущности: первый вызывается из рест-контоллера, находятся все версии для определенного id и потом они вызываются из базы на чтение. extractUsers - просто преобраазует прочитанные jpa сущности в строку.
При работе клиента(одного) при действиях, связанных с вызовом этих методов, Сервера перестает отвечать. Сервер - webshpere с jdbc - ресурсами. PoolConnections = 10
-Я ловлю баг того, что все коннекшены заняты. Через 3 минуты они освобождаются системой и сервис вновь доступен. -Если увеличить poolconnection до 40 - проблема не воспроизводится -Если посмотреть диспетчер коннекшенов, то видно, что за миллисекунды, кол-во ожидающих коннекшенов растет от 1 до 10.
Что это может быть и с чем свяазано?
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());
}
Использую @Audit для hibernate. В логах еще видел такую фразу, но не знаю связана ли она с проблемой.
[2/27/19 10:50:32:516 MSK] 00000103 SystemOut O [2019-02-27 10:50:32.516] WARN ework.orm.jpa.vendor.HibernateJpaDialect JDBC Connection to reset not identical to originally prepared Connection - please make sure to use connection release mode ON_CLOSE (the default) and to run against Hibernate 4.2+ (or switch HibernateJpaDialect's prepareConnection flag to false
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости