Поставщик org.ehcache.jcache.JCacheCachingProvider не является подтипом в Tomcat / lib - PullRequest
0 голосов
/ 05 ноября 2019

При использовании 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 может решить проблему? Но я хотел бы просто проверить здесь, прежде чем пройти через этот процесс.

...