2017-01-05 3 views
0

Я рассматриваю документацию для RemoteCache, RemoteCacheManager, Lifecycle Start и Lifecycle Stop.RemoteCache, RemoteCacheManager и жизненный цикл

Мне сложно понять, что именно делают методы start() и stop().

Причина, по которой я спрашиваю, заключается в том, что я пытаюсь удаленно останавливать и запускать конкретный кеш. Я хочу сделать это, чтобы я мог наблюдать за тем, как работают мои приложения во время остановленного/начального состояния. я пишу тест, который удаленно останавливает кеш. Когда это произойдет, я создаю симулированный вызов, чтобы увидеть, как мое программное обеспечение ведет себя сейчас, когда кеш отключен.

Я попытался вызвать функции stop() и start() в RemoteCache и RemoteCacheManager на конкретном экземпляре, но никакие исключения, по-видимому, не возникают из-за зависимости 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(); 

Конечно, если моя мягкая ware call getCache, и я установил, что кеш остановился во время моего теста, он должен бросить какое-то исключение или подать жалобу на какой-то уровень, нет?

ответ

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

Надеется, что это поможет. Не забывайте отмечать ответ как принятый и повышать его, если он подходит для вашего вопроса!

+0

Anup, мой вопрос не обязательно заключается в том, как настроить диспетчер удаленного кэша, а что делать с методами start и stop? Разумеется, диспетчер удаленного кэша должен иметь возможность напрямую взаимодействовать с сетью данных босса, нет? – angryip

+0

-start() и stop() - метод Lifecycle. Чтобы иметь возможность использовать RemoteCache, сначала необходимо запустить RemoteCacheManager: помимо других вещей, это создает соединения с серверами Hot Rod. Запуск RemoteCacheManager можно выполнить либо при создании, передав start == true в конструктор, либо используя конструктор, который сделает это для вас (см. Документацию C-tor); или после построения, вызвав RemoteCacheManager.start(). –

+0

Это «дорогой» объект, так как он управляет набором постоянных TCP-соединений с серверами Hot Rod. Рекомендуется иметь только один экземпляр этого на JVM и кэшировать его между вызовами на сервер (т. Е. Операции remoteCache). -RemoteCacheManager.stop() необходимо явно вызывать, чтобы освободить все ресурсы (например, потоки, TCP-соединения). –

Смежные вопросы