我需要以编程方式启动和停止本地infinispan缓存。要最初启动缓存,我所要做的就是:
defaultcachemanager.getCache("local");
当系统(在这种情况下为karaf)出现并且完美运行时会发生这种情况。要停止缓存,我会这样做:
defaultcachemanager.stop();
然后当我尝试使用:
启动相同的缓存时defaultcachemanager.getCache("local");
失败了。我试着这样做:
defaultcachemanager.startCache("local");
失败并出现异常
"Cache container has been stopped and cannot be reused. Recreate the cache container."
我想那时缓存容器没有启动。但不是
defaultcachemanager.startCache("local");
也应该创建并启动缓存。我不确定我错过了什么。我是否需要创建
的新实例defaultcachemanager
再次?我查看了defaultcachemanager的代码,我看到只有缓存条目被停止,我没有看到实例本身被破坏。
上周我开始研究Infinispan时,原谅我的无知。任何指针都非常感谢。
感谢,
阿沙
答案 0 :(得分:3)
通过调用defaultcachemanager.stop();
,您停止了“整个”缓存管理器。因此,目前,这里没有缓存管理器的运行实例。
您需要的只是停止缓存,而不是停止“整个”缓存管理器。
defaultcachemanager.getCache(cacheName).stop();
停止给定名称的缓存。
defaultcachemanager.getCache(cacheName).start();
这是停止后重新启动本地缓存的方法。
defaultcachemanager.startCache(cacheName);
通过此操作,您可以使用配置构建器在缓存管理器实例化期间设置的默认配置创建具有给定名称的另一个缓存。