Plug-in ObjectGridEventListener

Um plug-in ObjectGridEventListener fornece eventos de ciclo de vida do WebSphere eXtreme Scale para o ObjectGrid, shards e transações. Um plug-in ObjectGridEventListener fornece notificações quando um ObjectGrid é inicializado ou destruído, e quando uma transação é iniciada ou encerrada. Plug-ins ObjectGridEventListener são classes customizadas que você grava implementando a interface ObjectGridEventListener. Opcionalmente, a implementação inclui subinterfaces do ObjectGridEventGroup e segue as convenções comuns do plug-in do eXtreme Scale.

Visão Geral

Um plug-in ObjectGridEventListener é útil quando um plug-in Loader estiver disponível e for necessário inicializar uma ou mais conexões do Java Database Connectivity (JDBC) para um backend quando as transações forem iniciadas e encerradas. Normalmente, um plug-in ObjectGridEventListener e um plug-in Loader são gravados juntos.

Gravando um plug-in ObjectGridEventListener

Um plug-in ObjectGridEventListener deve implementar a interface ObjectGridEventListener para receber notificações sobre eventos significativos do eXtreme Scale. Para receber notificações de eventos adicionais, é possível implementar as interfaces a seguir. Estas subinterfaces são incluídas na interface ObjectGridEventGroup: Para obter mais informações sobre essas interfaces, consulte a Documentação da API.

Eventos do Shard

Quando o serviço de catálogo colocar shards primários ou de réplica na partição em uma Java virtual machine (JVM), uma nova instância do ObjectGrid será criada nessa JVM para hospedar esse shard. Alguns aplicativos que precisam iniciar os encadeamentos no JVM, hospedam a notificação de necessidade primária desses eventos. A interface ObjectGridEventGroup.ShardEvents declara os métodos shardActivate e shardDeactivate. Esses métodos são chamados apenas quando uma parte é ativada como primária e quando a parte é desativada a partir da primária. Esses dois eventos permitem que o aplicativo inicie encadeamentos adicionais quando o shard for primário e pare os encadeamentos quando o shard voltar a ser uma réplica ou for retirado de serviço.

Um aplicativo pode determinar qual partição foi ativada ao procurar por um BackingMap específico na referência ObjectGrid fornecida para o método shardActivate usando o método ObjectGrid#getMap. O aplicativo pode visualizar, em seguida, o número de partição usando o método BackingMap#getPartitionId(). As partições são numeradas de 0 ao número de partições no descritor de implementação menos um.

Eventos de Ciclo de Vida do Shard

Os eventos dos métodos ObjectGridEventListener.initialize e ObjectGridEventListener.destroy são entregues utilizando a interface ObjectGridEventGroup.ShardLifecycle.

Eventos de Transação

Os métodos ObjectGridEventListener.transactionBegin e ObjectGridEventListener.transactionEnd são entregues através da interface ObjectGridEventGroup.TransactionEvents.

Se um plug-in ObjectGridEventListener implementa as interfaces ObjectGridEventListener e ShardLifecycle, então, os eventos de ciclo de vida do shard serão os únicos eventos a serem entregues para o listener. Após implementar qualquer uma das novas interfaces ObjectGridEventGroup internas, o eXtreme Scale entrega apenas esses eventos específicos através de novas interfaces. Com essa implementação, o código pode ser compatível com as versões anteriores. Se você estiver utilizando as novas interfaces internas, poderá agora receber apenas os eventos específicos necessários.

Utilizando o Plug-in ObjectGridEventListener

Para utilizar um plug-in ObjectGridEventListener customizado, primeiro crie uma classe que implementa a interface ObjectGridEventListener e quaisquer subinterfaces do ObjectGridEventGroup opcionais. Inclua o listener customizado em um ObjectGrid para receber notificação de eventos importantes. Você tem duas abordagens para incluir um plug-in ObjectGridEventListener na configuração do eXtreme Scale: configuração programática e configuração XML.

Configurar um Plug-in do ObjectGridEventListener Programaticamente

Suponha que o nome de classe do listener de eventos do eXtreme Scale seja a classe com.company.org.MyObjectGridEventListener. Esta classe implementa a interface ObjectGridEventListener. O fragmento de código a seguir cria um ObjectGridEventListener customizado e o inclui em um ObjectGrid.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", false);
MyObjectGridEventListener myListener = new MyObjectGridEventListener();
myGrid.addEventListener(myListener);

Configurar um Plug-in do ObjectGridEventListener com XML

Também é possível configurar um plug-in ObjectGridEventListener utilizando XML. O XML a seguir cria uma configuração que é equivalente ao listener de eventos do ObjectGrid programaticamente criado e descrito. O texto a seguir deve estar no arquivo myGrid.xml:
<?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="ObjectGridEventListener" 
							className="com.company.org.MyObjectGridEventListener" />
            <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. O fragmento de código a seguir demonstra como criar uma instância do ObjectGrid utilizando este arquivo XML. A instância do ObjectGrid criada possui um listener ObjectGridEventListener configurado no ObjectGrid myGrid.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", new URL("file:etc/test/myGrid.xml"), true, false);