Establezca el estado inicial de un ObjectGrid con el archivo XML de configuración de ObjectGrid. Puede utilizar el atributo initialState en un ObjectGrid para indicar su estado inicial. Normalmente, cuando un ObjectGrid finaliza su inicialización, está disponible para el direccionamiento. El estado podrá cambiarse más adelante para impedir que el tráfico se direccione a un ObjectGrid. Si es necesario inicializar el ObjectGrid, pero no está inmediatamente disponible, puede utilizar el atributo initialState.
El atributo initialState se establece en el archivo XML de configuración de
ObjectGrid. El estado predeterminado es ONLINE.
Los valores válidos son:
- ONLINE (valor predeterminado)
- PRELOAD
- OFFLINE
Consulte Archivo XML de descriptor ObjectGrid para obtener más información sobre el atributo initialState.
Si el atributo initialState se establece en un ObjectGrid, el estado se debe establecer explícitamente de nuevo en línea o el ObjectGrid continuará estando no disponible. Se genera una excepción AvailabilityException
si el ObjectGrid no está en el estado ONLINE.
Consulte la documentación de la API AvailabilityState para obtener más información.
Utilización del atributo initialState para la precarga
Si el ObjectGrid se precarga con datos, puede haber un periodo de tiempo entre el momento en que el ObjectGrid está disponible y el cambio a un estado de precarga para bloquear el tráfico del cliente. Para evitar este periodo de tiempo, el estado inicial en
un ObjectGrid se puede establecer en PRELOAD. El ObjectGrid finalizará toda la inicialización necesaria, pero bloqueará el tráfico hasta que el estado cambie y permita que se produzca la precarga.
Los estados PRELOAD y OFFLINE bloquean el tráfico, pero debe utilizarse el estado PRELOAD si desea iniciar una precarga.
Migración tras error y equilibrio
Si una cuadrícula de datos de réplica pasa a ser una cuadrícula de datos primaria, la réplica no utiliza el valor initialState.
Si la cuadrícula de datos primaria se traslada para realizar un reequilibrado, el valor initialState no se utiliza porque los datos se copian en la nueva ubicación primaria antes de que se complete el traslado. Si la réplica no se configura, la cuadrícula primaria pasa al valor initialState si se produce una migración tras error y se debe colocar una nueva cuadrícula primaria.
Cambie el estado de disponibilidad con la interfaz StateManager. Utilice la interfaz StateManager para establecer el estado de disponibilidad de un ObjectGrid. Para definir el estado de disponibilidad de un ObjectGrid que se ejecuta en los servidores, pase un cliente ObjectGrid correspondiente a la interfaz StateManager.
El siguiente código demuestra cómo cambiar el estado de disponibilidad de un 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 fragmento del ObjectGrid realiza la transición del estado deseado cuando se llama al método
setObjectGridState en la interfaz
StateManager. Cuando se devuelve el método, todos los fragmentos del ObjectGrid deben estar en el estado adecuado.
Utilice un plug-in ObjectGridEventListener para cambiar el estado de disponibilidad de un ObjectGrid del lado del servidor. Cambie sólo el estado de disponibilidad de un ObjectGrid del lado del servidor, si ObjectGrid tiene una única partición. Si el ObjectGrid tiene varias particiones, se llama al método shardActivated en cada fragmento primario, que genera llamadas superfluas para cambiar el estado del ObjectGrid
public class OGListener implements ObjectGridEventListener,
ObjectGridEventGroup.ShardEvents {
public void shardActivated(ObjectGrid grid) {
StateManager stateManager = StateManagerFactory.getStateManager();
stateManager.setObjectGridState(AvailabilityState.PRELOAD, grid);
}
}
Puesto que QUIESCE es un estado de transición, no puede utilizar la interfaz StateManager para colocar un ObjectGrid en el estado QUIESCE. Un ObjectGrid pasa a través de este estado al estado OFFLINE.