Configure o estado inicial de um ObjectGrid com o arquivo XML de configuração do ObjectGrid. O atributo initialState pode ser usado em um ObjectGrid para indicar seu estado de inicialização. Normalmente, quando um ObjectGrid conclui sua
inicialização, ele está disponível para roteamento.
O estado pode ser
posteriormente alterado para evitar o tráfego de roteamento para um
ObjectGrid. Se o ObjectGrid precisar ser inicializado, mas não ficar imediatamente disponível, será possível usar o atributo initialState.
O atributo initialState é configurado no arquivo XML de configuração
do ObjectGrid. O estado padrão é ONLINE. Os valores válidos
incluem:
- ONLINE (padrão)
- PRELOAD
- OFFLINE
Consulte Arquivo XML descritor do ObjectGrid para obter informações adicionais sobre o atributo initialState.
Se o atributo initialState
estiver configurado em um ObjectGrid, o estado deverá ser explicitamente
configurado de volta como on-line ou o ObjectGrid permanecerá
indisponível. Uma exceção AvailabilityException resultará se o ObjectGrid não estiver no estado ON-LINE.
Consulte AvailabilityState Documentação da API para obter mais informações.
Utilizando o
atributo initialState para pré-carregamento
Se o ObjectGrid for pré-carregado com dados, pode haver um período de tempo entre quando o ObjectGrid está disponível e a mudança para um estado pré-carregado para bloquear o tráfego do cliente. Para evitar este período de tempo, o estado inicial em um ObjectGrid pode ser configurado como PRELOAD. O ObjectGrid ainda conclui todas as inicializações necessárias, mas ele bloqueia o tráfego até que o estado mude e permite que o pré-carregamento ocorra.
Ambos os estados PRELOAD e OFFLINE
bloqueiam o tráfego, mas você deve utilizar o estado PRELOAD se
deseja iniciar um pré-carregamento.
Comportamento de failover
e equilíbrio
Se uma grade de dados de réplica for promovida para ser uma grade de dados primária, a réplica não usará a configuração initialState.
Se a grade de dados primária for movida para um re-equilíbrio, a configuração initialState não será usada porque os dados são copiados para o novo local do shard primário antes de a movimentação ser concluída. Se a replicação não for configurada, o primário irá para a configuração initialState se ocorrer failover e um novo primário deverá ser colocado.
Altere o estado da disponibilidade com a interface StateManager. Use a interface StateManager para configurar o estado de disponibilidade de um ObjectGrid. Para configurar o estado de disponibilidade de um ObjectGrid em
execução nos servidores, transmita um cliente ObjectGrid
correspondente para a interface StateManager. O código a seguir demonstra como alterar o estado de disponibilidade
de um ObjectGrid.
ClientClusterContext client = ogManager.connect("localhost:2809", null, null);
ObjectGrid myObjectGrid = ogManager.getObjectGrid(client, "myObjectGrid");
StateManager stateManager = StateManagerFactory.getStateManager();
stateManager.setObjectGridState(AvailabilityState.OFFLINE, myObjectGrid);
Cada shard de ObjectGrid muda para o estado desejado quando o método
setObjectGridState é chamado na interface
StateManager. Quando o método retornar, todos os shards no ObjectGrid deverão estar
no estado adequado.
Use um plug-in ObjectGridEventListener para alterar o estado de disponibilidade de um ObjectGrid do lado do servidor. Altere o estado de disponibilidade de um ObjectGrid do lado do servidor apenas quando o ObjectGrid tiver uma única partição. Se o ObjectGrid tiver múltiplas partições, o método shardActivated será chamado em cada primário, o que resultará em chamadas desnecessárias para alterar o estado do ObjectGrid
public class OGListener implements
ObjectGridEventListener, ObjectGridEventGroup.ShardEvents {
public void shardActivated(ObjectGrid grid) {
StateManager stateManager = StateManagerFactory.getStateManager();
stateManager.setObjectGridState(AvailabilityState.PRELOAD, grid);
}
}
Como QUIESCE é o estado transicional, você não pode usar a interface StateManager para colocar um ObjectGrid em um estado QUIESCE. Um ObjectGrid transmite passa por este estado em seu caminho para o estado OFFLINE.