Другой безымянный CacheManager уже существует в той же ошибке виртуальной машины при развертывании приложения Grails 3.1.4 в Elastic Beanstalk.

Примерно неделю назад после выполнения prod dbm-update я начал получать эту ошибку при развертывании WAR-файла в EB (run-app отлично работает как в настройках dev, так и в prod):

Caused by: org.hibernate.cache.CacheException: net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following: 1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary 2. Shutdown the earlier cacheManager before creating new one with same name.

примечания к выпуску Grails 2.5.0 предлагается установить beans.cacheManager.shared к истине. Не помогло.

Другие люди, столкнувшиеся с похожими проблемами, предложили заменить factory_class Hibernate cache с org.hibernate.cache.ehcache.EhCacheRegionFactory на org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory - это сообщение. Я думаю, что это устранило проблему безымянного cacheManager, но создало еще одну:

Caused by: java.io.FileNotFoundException: class path resource [db/changelog/db.changelog-master.yaml] cannot be resolved to URL because it does not exist

Установка «liquibase.checkChangeLogLocation = false» и «liquibase.enabled = false» вызывает еще одно:

Caused by: org.grails.core.exceptions.GrailsConfigurationException: Error configuring dynamic methods for plugin [springSecurityCore:3.0.4]: null

Я использую: Grails 3.1.4 с профилем AngularJS, Spring Security 3.0.4, Spring Security Rest 2.0.0.M2, миграцию базы данных 2.0.0.RC4.

Я также пробовал:

  • переход на Spring Security 3.0.2, 3.0.3
  • завершение экземпляра EC2
  • перестроение всей среды EB и создание новой базы данных
  • установка спящего режима use_second_level_cache на false
  • переход на Grails 3.1.0
  • настройка sourceSets { main { resources { srcDir 'grails-app/migrations'}}}

У меня заканчиваются идеи, и пока ничего не помогло. У кого-нибудь есть идея? Или сталкивается с аналогичными проблемами?


person Vahur Hansen    schedule 05.04.2016    source источник
comment
Я перестроил среду Elastic Beanstalk, добавил exclude module: 'ehcache-core' в плагин org.hibernate:hibernate-ehcache (показано здесь) установите liquibase.enabled = false. Теперь приложение не показывает никаких ошибок в журналах tomcat, а только {"message":"Not Found","error":404}, когда я посещаю любой URL-адрес на сайте. Каким-то образом .../login/auth показывает стандартную форму входа в систему Spring Security. Все остальные пути показывают ошибку 404. Все работает в разработке.   -  person Vahur Hansen    schedule 14.04.2016


Ответы (3)


Вы недавно обновились до Hibernate 5.1.0.Final? Если да, то у вас может быть та же проблема, что и у one. Похоже, решение не найдено, но вы можете перейти на Hibernate 5.0.9.Final, чтобы пока избежать этой проблемы.

person Ghostwritertje    schedule 12.04.2016
comment
Нет, версия Hibernate выглядит следующим образом: org.grails.plugins:hibernate4: -> 5.0.3. EhCache — это org.hibernate:hibernate-ehcache: -> 4.3.11.Final - person Vahur Hansen; 13.04.2016

Оказалось, что проблема связана с подключаемым модулем Grails 3 AWS SDK. Я отменил все свои изменения и просто заменил плагин на AWS SDK для Java через Gradle.

Вы можете увидеть на странице плагина, что он поддерживает Grails до версии 3.1. 1, но переход с 3.1.4 на 3.1.1 тоже ничего не изменил. Но да, использование AWS SDK без плагина работало. Ву!

person Vahur Hansen    schedule 16.04.2016

Я использовал плагин Spring Security Core v3.0.4 и получил эту ошибку также на Grails v3.1.4. Обновление плагина SSC ​​до версии 3.1.1. исправил проблему для меня.

person Yuri    schedule 29.06.2016