我正在Infinispan中使用JCache API。现在,我想使缓存成为群集。
在Infinispan中,我只会说:
GlobalConfiguration global = GlobalConfigurationBuilder.defaultClusteredBuilder().build();
CacheManager cacheManager = new DefaultCacheManager(global);
Configuration config = new ConfigurationBuilder().cluster.cacheMode(REPL_SYNC).build();
cacheManager.defineConfiguration("clusteredCache", config);
Cache<String, String> clusteredCache = cacheManager.getCache("clusteredCache");
但是使用JCache API,我无法访问Infinispan的配置。因此,据我所知,获取群集缓存的唯一方法是在xml文件中对其进行配置,然后将其移交给javax.cache.CacheManager
,如下所示:
javax.cache.CacheManager cacheManager = Caching.getCachingProvider()
.getCacheManager(URI.create("infinispan-clustered.xml"), getClass().getClassLoader());
javax.cache.Cache<String, String> clusteredCache = cacheManager.getCache("[name defined in xml file]");
但这并不是我真正想要的,因为我不能将新的群集缓存动态添加到CacheManager。
所以我的问题是:如何在不定义xml文件的情况下使JCache集群化?