tomcat - 提供者 org.ehcache.jcache.JCacheCachingProvider 不是 Tomcat /lib 中的子类型
问题描述
当使用 ehcache 作为常规依赖项并将其与 WAR/lib 文件夹一起加载时,一切都很好。但正如 ehcache 站点上所描述的,在尝试重新部署时,我们遇到了内存泄漏问题:
https://www.ehcache.org/documentation/2.8/integrations/tomcat.html#class-loader-memory-leak
我正在尝试清理这些,但在执行以下操作后:
- 添加
<scope>provided</scope>
到 org.ehcache.jcache 的项目 - 将 javax.cache、org.ehcache.jcache 和 org.slf4j jar 文件放在 Tomcat/lib 中
我收到错误:
引起: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
解决问题?但我想在完成该过程之前在这里检查一下。
解决方案
推荐阅读
- .htaccess - .htaccess 与子域屏蔽和 https 重定向
- ruby-on-rails - Rails:将“master.key”移动到生产服务器
- nativescript - 如何在 NativeScript-Vue 中构建固定页脚?
- swift - 有没有办法使用 value(forKeyPath:) 访问 KVC 中的数组元素?
- c - MPI_ERR_RANK:集群排名无效
- android - 使用带有 onesignal 的 Firebase 时,应用程序在首次运行时崩溃
- python - 如何使用 PySpark 获取对应于最高 tf-idf 的单词?
- encryption - 如何解密仅知道密钥长度的 AES CBC 加密文件
- javascript - 序列化带有相应标签的表单
- android - 旋转动画保持返回其默认状态