RemoteCache,RemoteCacheManager和Lifecycle

时间:2017-01-05 15:37:42

标签: java datagrid jboss

我正在查看RemoteCacheRemoteCacheManagerLifecycle StartLifecycle Stop的文档。

我很难理解start()和stop()方法到底做了什么。

我问的原因是因为我试图远程停止并启动特定缓存。我想这样做,以便我可以观察我的应用程序在停止/启动状态期间发挥的行为。即我写了一个远程停止缓存的测试。发生这种情况时,我会进行一次模拟调用,看看我的软件在缓存已关闭的情况下的行为。

我尝试在特定实例上的RemoteCache和RemoteCacheManager中调用stop()和start(),但infinispan依赖项似乎没有异常。因此,它让我相信我误解了这两种方法的目的。

我的软件使用如下代码调用远程缓存:

final RemoteCache<String, String> cache = remoteCacheManager.getCache(CACHE_NAME);
if (cache != null) {
    if (cache.containsKey(key)) {
        // Do something
    } else {
        // Do something else
    }
} else {
    throw new Exception("cache null");
}

我的测试是用这样的代码调用远程缓存:

final Properties props = new Properties();
props.put(ConfigurationProperties.SERVER_LIST, serverList);
props.put(ConfigurationProperties.SO_TIMEOUT, 5000);
props.put(ConfigurationProperties.CONNECT_TIMEOUT, 5000);
rmtCacheMgr = new RemoteCacheManager(props, true);

在测试中,我可能会执行类似这样的操作来停止远程缓存:

rmtCacheMgr.close();

当然,如果我的软件调用了getCache,并且我在测试期间将缓存设置为停止,那么它应该抛出一些异常或者在某种程度上抱怨,不是吗?

1 个答案:

答案 0 :(得分:0)

配置新的RemoteCacheManager:

import org.infinispan.client.hotrod.configuration.Configuration;
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;

Configuration conf = new 
ConfigurationBuilder().addServer().host("localhost").port(11222).build();
RemoteCacheManager manager = new RemoteCacheManager(conf);
RemoteCache defaultCache = manager.getCache();

https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Data_Grid/6.4/html-single/Administration_and_Configuration_Guide/index.html#part-Set_Up_a_Cache_Manager

希望这会有所帮助。不要忘记将答案标记为已接受,并在适合您的问题时进行投票!