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

问题描述 投票:1回答:1

我们的Thorntail(2.4.0.Final)Web应用程序使用Infinispan作为JCache (JSR-107) provider。除了JCache的属性(例如store-by-value选项)之外,我们还要修改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());
    }
}
  • FooCache接口定义为:
@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);
}

这是我们失败的地方,因为foo缓存已经存在(根据XML配置创建)。有什么方法可以配置现有缓存?还是任何其他允许我们保持缓存提供者不可知的方式?谢谢您的回答。

jakarta-ee infinispan jcache thorntail infinispan-9
1个回答
0
投票

我们遇到了类似的问题,除了在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流中可以正常工作,但是升级到9.4流后,它现在不起作用。我们认为这是意外的,已经提交了错误报告(ISPN-11918

© www.soinside.com 2019 - 2024. All rights reserved.