gpt4 book ai didi

java - Infinispan 缓存初始化失败

转载 作者:行者123 更新时间:2023-12-01 09:28:29 34 4
gpt4 key购买 nike

我使用 JBoss 6.4 EAP 和 Infinispan 6。

  <dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-core</artifactId>
<version>6.0.2.G1.Final</version>
</dependency>

我有一个初始化 Infinispan 缓存管理器的代码。

public class CacheManager {
...

private synchronized DefaultCacheManager getManager() {
if (this.manager != null) {
return this.manager;
}

if (externalConfigFile != null) {
FileInputStream configurationStream = null;
try {
configurationStream = new FileInputStream(externalConfigFile);
ConfigurationBuilderHolder holder = new ParserRegistry().parse(configurationStream);
initJmx(holder.getGlobalConfigurationBuilder());
manager = new DefaultCacheManager(holder, true);
} catch (IOException e) {
String msg = "Error creating Infinispan cache manager from file " + externalConfigFile;
throw new SomeException(msg, e);
} finally {
if (configurationStream != null) {
try {
configurationStream.close();
} catch (IOException e) {
throw new CacheInitException(e);
}
}
}
} else {
GlobalConfigurationBuilder globalConfigurationBuilder = new GlobalConfigurationBuilder();
initJmx(globalConfigurationBuilder);
manager = new DefaultCacheManager(globalConfigurationBuilder.build());
}

started = true;
return manager;
}

private void initJmx(GlobalConfigurationBuilder globalConfigurationBuilder) {
globalConfigurationBuilder.globalJmxStatistics().cacheManagerName("aaaa");
globalConfigurationBuilder.globalJmxStatistics().allowDuplicateDomains(true);
}

...
}

当我不提供 XML 文件形式的附加配置时,它可以正常工作。但是当我提供以下附加配置时

<infinispan>
<namedCache name="my_cache" >
<eviction strategy="LIRS" maxEntries="65535" />
<clustering mode="dist">
<async />
</clustering>
</namedCache>
</infinispan>

当我的应用程序尝试获取“my_cache”缓存实例时,该缓存实例为空。

package org.infinispan.manager;

public class DefaultCacheManager implements EmbeddedCacheManager, CacheManager {
...

@Override
public <K, V> Cache<K, V> getCache(String cacheName) {
assertIsNotTerminated();
if (cacheName == null)
throw new NullPointerException("Null arguments not allowed");

CacheWrapper cw = caches.get(cacheName);
if (cw != null) {
return cw.getCache();
}

return createCache(cacheName);
}

...
}

在这种情况下,方法cw.getCache()返回null(缓存名称可在缓存列表中使用,并且配置也可用)。

我需要可以在 XML 文件中定义的分布式 my_cache 缓存实例。

有人可以解释为什么 Infinispan 在这种情况下返回 null 吗?

最佳答案

您是否尝试过使用DefaultCacheManagher#defineConfiguration(cacheName, configuration)?它应该完全满足您的需要(但您可能需要将 XML 迁移到 ConfigurationBuilder 等)。

关于java - Infinispan 缓存初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650086/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com