1

我需要以编程方式启动和停止本地 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 工作时的无知。非常感谢任何指针。

谢谢,

阿莎

4

1 回答 1

3

通过调用defaultcachemanager.stop();您停止了“整个”缓存管理器。因此,目前,这里没有缓存管理器的运行实例。

您需要做的就是停止缓存本身,而不是停止“整个”缓存管理器。

defaultcachemanager.getCache(cacheName).stop();

停止给定名称的缓存。

defaultcachemanager.getCache(cacheName).start();

这是停止后重新启动本地缓存的方法。

defaultcachemanager.startCache(cacheName);

通过这种方式,您可以使用配置构建器在缓存管理器实例化期间设置的默认配置创建另一个具有给定名称的缓存。

于 2013-06-18T07:35:28.510 回答