Plug-in ObjectGridEventListener

Un plug-in ObjectGridEventListener proporciona sucesos de ciclo de vida de WebSphere eXtreme Scale para ObjectGrid, fragmentos y transacciones. Un plug-in ObjectGridEventListener proporciona notificaciones cuando se inicializa o destruye un ObjectGrid, y cuando se inicia o finaliza una transacción. Los plug-ins ObjectGridEventListener son clases personalizadas que se escriben implementando la interfaz ObjectGridEventListener. De forma opcional, la implementación incluye las subinterfaces ObjectGridEventGroup y sigue las convenciones comunes de plug-in eXtreme Scale.

Visión general

Un plug-in ObjectGridEventListener es útil cuando está disponible un plug-in Loader, y debe inicializar la conexiones JDBC (Java Database Connectivity) o las conexiones a un programa de fondo cuando se inician y finalizan las transacciones. En general, un plug-in ObjectGridEventListener y un plug-in Loader se escriben juntos.

Escritura de un plug-in ObjectGridEventListener

Un plug-in ObjectGridEventListener debe implementar la interfaz ObjectGridEventListener para recibir notificaciones sobre los sucesos significativos de eXtreme Scale. Para recibir notificaciones de sucesos adicionales, puede implementar las siguientes interfaces. Estas subinterfaces se incluyen en la interfaz ObjectGridEventGroup: Si desea más información sobre estas interfaces, consulte la documentación de la API.

Sucesos de fragmentos

Cuando el servicio de catálogo coloca los fragmentos del primario de la partición o de réplica en una máquina virtual Java (JVM), se crea una nueva instancia de ObjectGrid en dicha JVM para alojar dicho fragmento. Algunas aplicaciones que necesitan iniciar hebras en la JVM alojan la notificación necesaria primaria de estos sucesos. La interfaz ObjectGridEventGroup.ShardEvents declara los métodos shardActivate y shardDeactivate. Estos métodos se invocan sólo cuando un fragmento está activado como primario y cuando el fragmento se desactiva del primario. Estos dos sucesos permiten a la aplicación iniciar hebras adicionales cuando el fragmento es un primario y detenerlas cuando el fragmento vuelve a ser una réplica o se queda fuera de servicio.

Una aplicación puede determinar qué partición ha sido activada por la búsqueda de un BackingMap específico en la referencia de ObjectGrid que se proporciona al método shardActivate mediante el método ObjectGrid#getMap. La aplicación puede ver el número de partición utilizando el método BackingMap#getPartitionId(). Las particiones están numeradas del 0 hasta el número de particiones en el descriptor de despliegue menos una.

Sucesos de ciclo de vida de fragmento

Los sucesos de los métodosObjectGridEventListener.initialize y ObjectGridEventListener.destroy se entregan utilizando la interfaz ObjectGridEventGroup.ShardLifecycle.

Sucesos de transacciones

Los métodos ObjectGridEventListener.transactionBegin y ObjectGridEventListener.transactionEnd se entregan a través de la interfaz ObjectGridEventGroup.TransactionEvents.

Si un plug-in ObjectGridEventListener implementa las interfaces ObjectGridEventListener y ShardLifecycle, los sucesos de ciclo de vida de fragmentos son los únicos sucesos que se entregan al escucha. Después de implementar cualquiera de las nuevas interfaces internas de ObjectGridEventGroup, eXtreme Scale sólo entrega estos sucesos específicos mediante las nuevas interfaces. Con esta implementación, el código puede ser compatible con versiones anteriores. Si utiliza las nuevas interfaces internas ahora puede recibir sólo los sucesos específicos necesarios.

Utilización del plug-in ObjectGridEventListener

Para utilizar un plug-in ObjectGridEventListener personalizado, primero cree una clase que implemente la interfaz ObjectGridEventListener y todas las subinterfaces ObjectGridEventGroup opcionales. Añada el escucha personalizado a un ObjectGrid para recibir una notificación de los sucesos significativos. Dispone de dos procedimientos para añadir un plug-in ObjectGridEventListener en la configuración de eXtreme Scale: configuración programática y configuración XML.

Configurar un plug-in ObjectGridEventListener mediante programación

Presuponga que el nombre de la clase del receptor de sucesos de eXtreme Scale es la clase com.company.org.MyObjectGridEventListener. Esta clase implementa la interfaz ObjectGridEventListener. El siguiente fragmento de código crea el ObjectGridEventListener personalizado y lo añade a un ObjectGrid.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", false);
MyObjectGridEventListener myListener = new MyObjectGridEventListener();
myGrid.addEventListener(myListener);

Configurar un plug-in ObjectGridEventListener con XML

También puede configurar un plug-in ObjectGridEventListener mediante XML. El siguiente XML crea una configuración que es equivalente al receptor de sucesos de ObjectGrid descrito creado mediante programación. El siguiente texto debe aparecer en el archivo 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>
Tenga en cuenta que las declaraciones bean se indican antes que las declaraciones backingMap. Proporcione este archivo al plug-in ObjectGridManager para facilitar la creación de esta configuración. El siguiente fragmento de código demuestra cómo crear una instancia de ObjectGrid utilizando este archivo XML. La instancia de ObjectGrid que se crea tiene un receptor ObjectGridEventListener establecido en el ObjectGrid myGrid.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid myGrid = objectGridManager.createObjectGrid("myGrid", 
	new URL("file:etc/test/myGrid.xml"), true, false);