Plug-in ObjectGridLifecycleListener

Um plug-in ObjectGridLifecycleListener recebe a notificação de ciclo de vida do WebSphere eXtreme Scale, os eventos de mudança de estado para a grade de dados.

O plug-in ObjectGridLifecycleListener recebe um evento contendo um objeto ObjectGridLifecycleListener.State para cada mudança de estado do ObjectGrid. Qualquer plug-in ObjectGrid que também implementa a interface ObjectGridLifecycleListener é incluído automaticamente como um listener na instância do ObjectGrid na qual o plug-in está registrado.

Visão Geral

Um plug-in ObjectGridLifecycleListener é útil quando um plug-in ObjectGrid existente precisa executar atividades ligadas às atividades de um plug-in relacionado. Como exemplo, um plug-in TransactionCallback pode precisar recuperar a configuração a partir de um plug-in ObjectGridEventListener ou ShardListener cooperantes.

Ao implementar a interface ObjectGridLifecycleListener e detectar o evento ObjectGridLifecycleListener.State.INITIALIZED, o plug-in TransactionCallback pode detectar o estado de outros plug-ins na instância do ObjectGrid. O plug-in TransactionCallback pode recuperar com segurança informações a partir do plug-in ObjectGridEventListener ou do plug-in ShardListener cooperante, desde que o ObjectGrid esteja em um estado INICIALIZADO, significando que o método initialize() do outro plug-in foi chamado.

É possível incluir um plug-in ObjectGridLifecycleListener a qualquer momento, antes ou depois de inicializar o ObjectGrid.

Gravar um Plug-in ObjectGridLifecycleListener

Um plug-in ObjectGridLifecycleListener deve implementar a interface ObjectGridLifecycleListener para receber notificações sobre eventos significativos do eXtreme Scale. Qualquer plug-in ObjectGrid pode implementar a interface ObjectGridLifecycleListener e ser incluído automaticamente como um listener quando ele também for incluído no ObjectGrid.

Para obter mais informações sobre essas interfaces, consulte a Documentação da API.

Evento de Ciclo de Vida e Relacionamentos de Plug-in

O ObjectGridLifecycleListener recupera o estado do ciclo de vida a partir do evento no método objectgridStateChanged, por exemplo:
public void objectGridStateChanged(ObjectGrid grid, 
                                   LifecycleEvent event) 
throws LifecycleFailedException {
  switch(event.getState()) {
    case INITIALIZED: // All other plug-ins are initialized.
      // Retrieve reference to plug-in X for use from grid.
      break;
    case DESTROYING:  // Destroy phase is starting
      // Eliminate reference to plug-in X it may be destroyed before this plug-in
      break;
  }

A tabela a seguir descreve a relação entre os eventos de ciclo de vida enviados para um ObjectGridLifecycleListener e os estados do ObjectGrid e de outros objetos do plug.

Valor de ObjectGridLifecycleListener.State Descrição
INITIALIZING A fase de inicialização do ObjectGrid está começando. O ObjectGrid e os plug-ins do ObjectGrid estão prestes a serem inicializados.
INITIALIZED A fase de inicialização do ObjectGrid foi concluída. Todos os plug-ins do ObjectGrid foram inicializados. O estado INITIALIZED pode recorrer quando as atividades de posicionamento de shard (promoção ou rebaixamento) ocorrem. Todos os plug-ins de BackingMap nas instâncias do BackingMap de propriedade desta instância do ObjectGrid foram inicializados.
STARTING A instância do ObjectGrid está sendo ativada para uso como uma instância local, como uma instância do cliente ou como uma instância em um shard primário ou de réplica no servidor. O estado STARTING pode recorrer quando as atividades de posicionamento de shard (promoção ou rebaixamento) ocorrem.
PRELOAD A instância do ObjectGrid está configurada para o estado PRELOAD pela API StateManager ou para outra configuração.
ONLINE A instância do ObjectGrid está pronta para funcionar como uma instância local, como uma instância do cliente ou como uma instância em um shard primário ou de réplica no servidor. Esse estado estável é típico do ObjectGrid. O estado ONLINE pode recorrer quando as atividades de posicionamento de shard (promoção ou rebaixamento) ocorrem.
QUIESCE O trabalho está parando no ObjectGrid como resultado da API StateManager ou de outro evento. Nenhum trabalho novo é permitido. Termine qualquer trabalho existente o mais breve possível.
OFFLINE Todo o trabalho é interrompido no ObjectGrid como resultado da API StateManager ou de outro evento. Nenhum trabalho novo é permitido.
DESTROYING A instância do ObjectGrid está iniciando a fase de destruição. Os plug-ins do ObjectGrid para a instância estão prestes a serem destruídos. Durante a fase de destruição, todas as instâncias do BackingMap possuídas por esta instância do ObjectGrid também serão destruídas.
DESTROYED A instância do ObjectGrid, suas instâncias do BackingMap e todos os plug-ins do ObjectGrid forem destruídos.

Configurar um Plug-in ObjectGridLifecycleListener com XML

Suponha que o nome da classe do listener de eventos do eXtreme Scale seja a classe com.company.org.MyObjectGridLifecycleListener. Essa classe implementa a interface ObjectGridLifecycleListener.

É possível configurar um plug-in ObjectGridLifecycleListener usando XML. O XML a seguir cria uma configuração usando a interface ObjectGridLifecycleListener. O texto a seguir deve estar no arquivo xml da grade de objeto:
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
 xmlns="http://ibm.com/ws/objectgrid/config">
    <objectGrids>
        <objectGrid name="myGrid">
            <bean id="ObjectGridLifecycleListener" 
                  className="com.company.org.MyObjectGridLifecycleListener" />
            <backingMap name="Book"/>
        </objectGrid>
    </objectGrids>
</objectGridConfig>

Observe que as declarações de bean aparecem antes das declarações do backingMap. Forneça este arquivo para o plug-in ObjectGridManager para facilitar a criação desta configuração.

Tal como o ObjectGridLifecycleListener registrado no exemplo anterior, outros plug-ins do ObjectGrid, CollisionArbiter ou TransactionCallback por exemplo, que são especificados usando XML que também implementa a interface ObjectGridLifecycleListener, serão incluídos automaticamente como listeners de ciclo de vida.