提供程序org.ehcache.jcache.JCacheCachingProvider不是Tomcat / lib中的子类型

当使用ehcache作为常规依赖项并将其加载到WAR / lib文件夹中时,效果很好。但是,正如ehcache网站上所述,尝试重新部署时,我们遇到了内存泄漏问题:

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

我正在尝试清理它们,但请执行以下操作:

  • 为项目org.ehcache.jcache添加<scope>provided</scope>
  • 将javax.cache,org.ehcache.jcache和org.slf4j jar文件放在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导致一切恢复正常(内存泄漏和全部)。

我已经了解了org.ehcache.jcache的Maven依赖关系树,看起来只需要4个jar。这可能是版本控制问题?也许用org.ehcache.jcache替换net.sf.ehcache / org.ehcache.ehcache可能会解决问题?但是我想先检查一下这里,然后再执行该过程。

penglaoda 回答:提供程序org.ehcache.jcache.JCacheCachingProvider不是Tomcat / lib中的子类型

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3156680.html

大家都在问