首页 > 解决方案 > 提供者 org.ehcache.jcache.JCacheCachingProvider 不是 Tomcat /lib 中的子类型

问题描述

当使用 ehcache 作为常规依赖项并将其与 WAR/lib 文件夹一起加载时,一切都很好。但正如 ehcache 站点上所描述的,在尝试重新部署时,我们遇到了内存泄漏问题:

https://www.ehcache.org/documentation/2.8/integrations/tomcat.html#class-loader-memory-leak

我正在尝试清理这些,但在执行以下操作后:

我收到错误:

引起:java.util.ServiceConfigurationError: javax.cache.spi.CachingProvider: Provider 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 个 jar。这可能是版本控制的问题?也许替换org.ehcache.jcache/net.sf.ehcache可以org.ehcache.ehcache解决问题?但我想在完成该过程之前在这里检查一下。

标签: tomcatguiceehcache

解决方案


推荐阅读