вложенным исключением является javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari: name = dataSource, type = HikariDataSource - PullRequest
0 голосов
/ 06 ноября 2018

Я развернул мое весеннее загрузочное приложение в tomcat-8.5. Он работает нормально, пока развернут один экземпляр войны, но как только я пытаюсь развернуть следующую версию того же файла войны (я пытаюсь выполнить параллельное развертывание в tomcat), он выдает

Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [HikariDataSource (HikariPool-7)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSource.

Я знаю, поскольку один экземпляр уже запущен с существующим пулом hikari, при развертывании другого экземпляра пытается создать другой пул с тем же именем и выдается ошибка, поскольку пул уже существует.

Я могу менять имя пула каждый раз, когда развертываю новую версию приложения, но я не думаю, что это было бы хорошим решением.

Есть ли способ улучшить параллельное развертывание в Tomcat, не сталкиваясь с этой проблемой?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы не можете иметь 2 пула с одинаковыми именами, согласно @brettwooldridge response

каждое веб-приложение должно быть настроено с уникальным свойством poolName в HikariCP, иначе их регистрационные имена MBean будут конфликтовать.

Похоже, два пула как-то создаются. Второй, с тем же именем, что и первый, не сможет зарегистрироваться. Если вы не объявите poolName, то HikariCP автоматически сгенерирует их, что сработает, но, скорее всего, просто скрывает основную проблему, почему создаются два пула. Это проблема конфигурации Spring Boot или JHipster ... скорее всего Spring Boot.

Либо не объявляйте имя пула (если возможно), либо рандомизируйте / добавляйте последовательность к имени пула

...