当前位置: 首页 > 知识库问答 >
问题:

用作JCache(JSR-107)提供程序时的Infinispan特定配置?

邴兴为
2023-03-14

我们的Thorntail(2.4.0.Final)webapp使用Infinispan作为JCache(JSR-107)提供商。除了JCache的属性(如按值存储选项)之外,我们还想修改Infinispan特定的属性(如默认获取超时)。

我们当前的解决方案不起作用。以下是我们迄今为止所做的尝试。

  • 定义infinispan.xml
<infinispan
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:infinispan:config:5.2 http://www.infinispan.org/schemas/infinispan-config-9.4.xsd"
        xmlns="urn:infinispan:config:9.4">

    <cache-container>
        <local-cache  name="foo">
            <locking acquire-timeout="15000"/>
        </local-cache>
    </cache-container>
</infinispan>
  • 然后下面的类使用上面的配置:
public class CacheManagerProducer {

    @Produces
    @ApplicationScoped
    public CacheManager defaultEmbeddedCacheManager() {
        return Caching.getCachingProvider().getCacheManager(URI.create("infinispan.xml"), this.getClass().getClassLoader());
    }
}
  • Food Cache接口定义为:
@Qualifier
@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)

@Documented
public @interface FooCache {
}
  • 下面是我们如何使用JCache API配置缓存:
@Produces
@FooCache
public Cache<Long, DiscountOrAddition> createDiscoCache(InjectionPoint injectionPoint) {
    MutableConfiguration<Long, DiscountOrAddition> config = new MutableConfiguration<>();
    config.setStoreByValue(true);
    config.setStatisticsEnabled(false);
    config.setManagementEnabled(false);
    return mgr.createCache("foo", config);
}

这就是我们失败的地方,因为已经存在缓存(根据XML配置创建)。有没有办法配置现有缓存?或者任何其他让我们保持缓存提供程序不可知的替代方法?谢谢你的回答。

共有1个答案

鄢英哲
2023-03-14

除了在infinispan中定义缓存配置而不是缓存之外,我们遇到了类似的问题。xml:

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:infinispan:config:8.2 https://infinispan.org/schemas/infinispan-config-8.2.xsd"
    xmlns="urn:infinispan:config:8.2">

    <cache-container>
        <local-cache-configuration name="foo">
            <locking acquire-timeout="15000"/>
        </local-cache-configuration>
    </cache-container>
</infinispan>

预期上述配置将用作模板,并与JCache配置合并以创建缓存foo。这在Infinispan 8.2 stream中正常工作,但升级到9.4 stream后,它现在不工作。我们认为这是无意的,并且已经提交了错误报告(ISPN-11918)

 类似资料:
  • 我有一个关于JCache/Ehcache-XML配置的问题。 我将JSR 107缓存注释CDI参考实现与Ehcache一起使用。 我想用@CacheResult注释特定方法,以便这些方法的结果将缓存在为该特定方法生成的缓存中。在我们的例子中,这些方法的返回值是可选的,您可能知道,可选实例不可序列化,因此默认情况下不能缓存。默认使用的序列化拷贝器和PlainJavaSerializer在这方面失败。

  • 32.4 JCache (JSR-107) 注解 Spring Framework 4.1 以来,缓存抽象完全支持 JCache 标准:即 @CacheResult,@CachePut,@CacheRemove 和 @CacheRemoveAll 还有 @CacheDefaults,@CacheKey 和 @CacheValue 。这些注解被大家正确的使用,体现了缓存在 JSR-107 的实现:缓

  • 我们正在将ruby微服务迁移到kubernetes,我们过去在中保存特定于环境的配置。使用kubernetes,您可以为每个服务创建特定于环境的文件,例如等。 虽然kubernetes的pod配置文件能够保存环境变量,但您似乎不能在其中保存结构化数据。 例如,在中,我们有 在kubernetes中继续这种实践并在中打破环境是否合理,或者kubernetes是否有一些其他的最佳实践来为POD提供结构

  • 问题内容: 有人可以向我解释差异吗? Provisioner-在docker中安装,运行,拉出容器中的一项工作。 提供程序-是运行VM的东西。即VBox运行ubuntu OS映像。 Docker如何成为提供者?它直接运行一些docker镜像吗?如果我在Windows上,必须有一些boot2docker的隐藏用法,对不对?我什么时候使用每个? 问题答案: Docker Provisioner帮助准备

  • 我的问题是,这个“提供商app”是一个什么样的app?是否有任何Android API,该应用程序应该实现,以作为配置提供商?此配套应用程序如何将配置更改挂钩到中,以便托管应用程序能够检索这些更改? 我在这里问这个问题,因为不幸的是,我在Android文档中没有找到任何引用。

  • 我将为我的网站创建自定义用户提供程序,对于用户来说,没有“用户名”和“密码”这样的概念(实际上有类似于密码的东西,但它的名称不同)。在文档中,用户实体必须实现来自安全包的UserInterface,该安全包具有诸如getUsername、getPassword之类的方法。我能用我自己的领域吗?或者我应该使用名称冲突(例如,getUsername将返回我的唯一字段)来实现我的行为吗?