При использовании ehcache в качестве обычной зависимости и загрузке его в папку WAR / lib все хорошо. Но, как описано на сайте ehcache, при попытке повторного развертывания у нас возникают проблемы с утечкой памяти:
https://www.ehcache.org/documentation/2.8/integrations/tomcat.html#class-loader-memory-leak
Я пытаюсь устранить их, но после выполнения следующих действий:
- Добавить
<scope>provided</scope>
в проект для org.ehcache.jcache - Поместить jar-файлы javax.cache, org.ehcache.jcache и org.slf4j в Tomcat / lib
Я получаю сообщение об ошибке:
Причина: java.util.ServiceConfigurationError: javax.cache.spi.CachingProvider: Поставщик org.ehcache.jcache.JCacheCachingProvider не является подтипом в java.util.ServiceLoader.fail (ServiceLoader.java:231)
, что странно, поскольку https://github.com/ehcache/ehcache-jcache/blob/v1.0.1/ehcache-jcache/src/main/java/org/ehcache/jcache/JCacheCachingProvider.java реализует javax.cache.spi.CachingProvider
Удаление <scope>provided</scope>
и разрешение войны напереопределение Tomcat / lib приводит к тому, что все возвращается в нормальное состояние (memleak и все).
Я спустился в дерево зависимостей maven для org.ehcache.jcache
, и похоже, что нужны только 4 банки. Это может быть проблемой с контролем версий? может быть, замена org.ehcache.jcache
/ net.sf.ehcache
на org.ehcache.ehcache
может решить проблему? Но я хотел бы просто проверить здесь, прежде чем пройти через этот процесс.