【发布时间】:2020-07-07 08:25:47
【问题描述】:
在应用程序启动时,我尝试像这样创建缓存:
我用来创建缓存的代码如下:
final Configuration entityConfiguration = myCacheManager.getCacheConfiguration( "entity" );
Objects.requireNonNull( entityConfiguration );
myCacheManager.createCache( "XXXX", entityConfiguration );
这会导致以下异常:
org.infinispan.commons.CacheConfigurationException: ISPN000373: Attempted to start a cache using configuration template 'XXXX'
at org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:616)
at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:589)
at org.infinispan.manager.DefaultCacheManager.internalGetCache(DefaultCacheManager.java:475)
at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:461)
at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:447)
at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:413)
我理解这个异常意味着我不能有一个与缓存模板同名的缓存。
我查看了org.infinispan.manager.DefaultCacheManager(版本 9.2.5.Final)并找到了这个实现:
@Override
public <K, V> Cache<K, V> createCache(String name, Configuration configuration) {
defineConfiguration(name, configuration);
return getCache(name);
}
这使用传入的名称定义配置。在本例中为"XXXX",然后继续尝试创建具有完全相同名称的缓存。
在调用getCache(name) 时,它调用wireAndStartCache,它检查配置是否与缓存名称相同。总是这样,因为前面的代码传递了完全相同的字符串。我不明白这种方法怎么可能奏效。
如何避免此错误并创建缓存?
【问题讨论】:
标签: infinispan-9