Plug-in ObjectGridEventListener

Un plug-in ObjectGridEventListener fournit des événements du cycle de vie WebSphere eXtreme Scale pour l'ObjectGrid, les fragments et les transactions. Un plug-in ObjectGridEventListener fournit des notifications lorsqu'un ObjectGrid est initialisé ou détruit et lorsqu'une transaction est démarrée ou terminée. Les plug-in ObjectGridEventListener sont des classes personnalisées que vous créez lorsque vous implémentez l'interface ObjectGridEventListener. L'implémentation peut éventuellement inclure des sous-interfaces ObjectGridEventGroup et suivre les conventions communes aux plug-in eXtreme Scale.

Présentation

Un plug-in ObjectGridEventListener est utile si un plug-in Loader est disponible et que vous devez initialiser des connexions JDBC (Java Database Connectivity) ou des connexions à un système dorsal lorsque des transactions démarrent ou s'arrêtent. Généralement un plug-in ObjectGridEventListener et un plug-in Loader sont écrits ensembles.

Ecriture d'un plug-in ObjectGridEventListener

Un plug-in ObjectGridEventListener doit implémenter l'interface ObjectGridEventListener pour recevoir des notifications sur les événements eXtreme Scale importants. Pour recevoir des notifications d'événement supplémentaires, vous pouvez implémenter les interfaces ci-après. Ces sous-interfaces sont incluses dans l'interface ObjectGridEventGroup : Pour plus d'informations sur ces interfaces, voir la documentation de l'API.

Evénements de fragment

Lorsque le service de catalogue place des fragments primaires de partition ou des fragments réplique dans une machine virtuelle Java, une instance ObjectGrid est créée dans cette machine virtuelle Java pour héberger ce fragment. Certaines applications qui doivent démarrer des unités d'exécution sur la machine virtuelle Java qui héberge le fragment primaire doivent être notifiées de ces événements. L'interface ObjectGridEventGroup.ShardEvents déclare les méthodes shardActivate et shardDeactivate. Ces méthodes ne sont appelées que si un fragment est activé comme fragment primaire ou qu'un fragment est désactivé d'un serveur primaire. Ces deux événements permettent à l'application de démarrer des unités d'exécution supplémentaires si le fragment est un fragment primaire et d'arrêter les unités d'exécution si le fragment redevient une réplique ou est mis hors service.

Une application peut déterminer quelle partition a été activée en recherchant une mappe de sauvegarde spécifique dans la référence ObjectGrid fournie à la méthode shardActivate à l'aide de la méthode ObjectGrid#getMap. L'application peut alors déterminer le numéro de partition à l'aide de la méthode BackingMap#getPartitionId(). Les partitions sont numérotées de 0 au nombre de partitions dans le descripteur de déploiement moins un.

Evénements de cycle de vie du fragment

Les événements des méthodes ObjectGridEventListener.initialize et ObjectGridEventListener.destroy sont distribués à l'aide de l'interface ObjectGridEventGroup.ShardLifecycle.

Evénements de transaction

Les méthodes ObjectGridEventListener.transactionBegin et ObjectGridEventListener.transactionEnd sont distribuées via l'interface ObjectGridEventGroup.TransactionEvents.

Si un plug-in ObjectGridEventListener implémente les interfaces ObjectGridEventListener et ShardLifecycle, les événements de cycle de vie du fragment sont les seuls à être distribués au programme d'écoute. Une fois que vous avez implémenté l'une des nouvelles interfaces ObjectGridEventGroup internes, eXtreme Scale ne distribue que les événements spécifiques des nouvelles interfaces. Avec cette implémentation, le code offre une compatibilité amont. Si vous utilisez les nouvelles interfaces internes, il peut désormais ne recevoir que les événements nécessaires.

Utilisation du plug-in ObjectGridEventListener

Pour utiliser un plug-in ObjectGridEventListener personnalisé, créez d'abord une classe qui implémente l'interface ObjectGridEventListener et les éventuelles sous-interfaces ObjectGridEventGroup facultatives. Ajoutez le programme d'écoute personnalisé à un ObjectGrid pour recevoir la notification d'événements importants. Deux approches permettent d'ajouter un plug-in ObjectGridEventListener dans la configuration d'eXtreme Scale : la configuration à l'aide d'un programme et la configuration XML.

Configuration d'un plug-in ObjectGridEventListener à l'aide d'un programme

Supposons que le nom de classe du programme d'écoute d'événement d'eXtreme Scale correspond à la classe com.company.org.MyObjectGridEventListener. Cette classe implémente l'interface ObjectGridEventListener. Le fragment de code suivant crée l'interface ObjectGridEventListener personnalisée et l'ajoute à un ObjectGrid.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", false);
MyObjectGridEventListener myListener = new MyObjectGridEventListener();
myGrid.addEventListener(myListener);

Configuration d'un plug-in ObjectGridEventListener avec XML

Vous pouvez également configurer un plug-in ObjectGridEventListener à l'aide de XML. Le XML ci-après crée une configuration équivalente au programme d'écoute d'événements créé à l'aide d'un programme décrit. Le texte suivant doit se trouver dans le fichier 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>
Notez que les déclarations de bean précèdent les déclarations de mappe de sauvegarde. Fournissez ce fichier au plug-in ObjectGridManager pour faciliter la création de cette configuration. Le fragment de code suivant indique comment créer une instance ObjectGrid à l'aide de ce fichier XML. L'instance ObjectGrid créée possède un programme d'écoute ObjectGridEventListener défini sur l'ObjectGrid myGrid.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", 
	new URL("file:etc/test/myGrid.xml"), true, false);