You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenLiberty中独立启用JCache配置管理自定义缓存?

OpenLiberty下基于JCache+Infinispan实现自定义缓存的正确姿势

核心结论

OpenLiberty没有单独的cache特性,但你可以通过最小特性组合启用JCache核心能力,完全不需要引入会话缓存这类冗余功能。

具体配置方法

在server.xml里只需要启用两个轻量特性:

  • cdi-2.0(或对应你JEE版本的CDI特性,比如cdi-4.0):OpenLiberty的JCache集成依赖CDI来注入CacheManager和Cache实例
  • jcache-1.1:这是对应JCache API的核心特性,会自动注册CachingProvider、CacheManager,并支持自定义缓存配置

示例配置片段:

<featureManager>
    <feature>cdi-2.0</feature>
    <feature>jcache-1.1</feature>
</featureManager>

<!-- 配置你的自定义Infinispan缓存 -->
<cacheManager id="myCustomCacheManager">
    <cache id="myDataCache" uri="infinispan-config.xml"/>
</cacheManager>

把你的Infinispan配置文件infinispan-config.xml放在应用WEB-INF目录或者服务器的config目录下即可。

关于配置元素的依赖说明

你提到的cache、cacheManager、cachingProvider这些配置元素,必须依附于对应的特性才能生效——jcache-1.1就是专门为JCache API设计的最小特性集,不会附带会话缓存功能(会话缓存需要额外启用sessionCache-1.0这类特性,你完全可以跳过)。

备选方案的优劣对比

如果选择不依赖OpenLiberty,独立使用Infinispan+JCache,完全可行,但要注意:

  • 你得自己在代码里手动初始化缓存组件,比如:
CachingProvider provider = Caching.getCachingProvider();
CacheManager cacheManager = provider.getCacheManager(new URI("infinispan-config.xml"), getClass().getClassLoader());
Cache<String, Object> myCache = cacheManager.getCache("myDataCache");
  • 这种方式不需要服务器任何缓存特性,但会失去OpenLiberty集成的好处:比如缓存资源随服务器生命周期自动管理、CDI注入支持、统一配置入口等。

总结

优先选cdi-2.0 + jcache-1.1的组合,既能满足自定义缓存需求,又能利用服务器的集成能力,完全没有冗余功能。只有当你完全不想和服务器配置耦合时,再考虑独立使用Infinispan的方案。

内容的提问来源于stack exchange,提问作者Clément Honoré

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:06:19