Creación de plug-ins dinámicos de eXtreme Scale

WebSphere eXtreme Scale incluye los plug-ins ObjectGrid y BackingMap. Estos plug-ins se implementan en Java y se configuran utilizando el archivo XML de descriptor de ObjectGrid. Para crear un plug-in dinámico que se pueda actualizar dinámicamente, es necesario estar al corriente de los sucesos de ciclo de vida de ObjectGrid y BackingMap porque es posible que sea necesario completar algunas acciones durante la actualización. La ampliación de un paquete de plug-in con métodos de devolución de llamada de ciclo de vida, escuchas de sucesos, o ambos, permite al plug-in completar estas acciones en los momentos adecuados.

Antes de empezar

En este tema se supone que ha creado el plug-in apropiado. Para obtener más información sobre el desarrollo de plug-ins de eXtreme Scale, consulte el tema Plug-ins y API del sistema.

Acerca de esta tarea

Todos los plug-ins de eXtreme Scale se aplican a una instancia BackingMap u ObjectGrid. Muchos plug-ins también interactúan con otros plug-ins. Por ejemplo, un cargador y un plug-in TransactionCallback trabajan juntos para interactuar correctamente con una transacción de base de datos y las diversas llamadas JDBC de base de datos. Es posible que algunos plug-ins requieran también que se almacenen en la memoria caché datos de configuración de otros plug-ins a fin de mejorar el rendimiento.

Los plug-ins BackingMapLifecycleListener y ObjectGridLifecycleListener proporcionan operaciones de ciclo de vida para las instancias BackingMap y ObjectGrid respectivas. Este proceso permite notificar a los plug-ins cuando es posible que se cambien la BackingMap o la ObjectGrid padre y sus respectivos plug-ins. Los plug-ins BackingMap implementan la interfaz BackingMapLifecyleListener y los plug-ins ObjectGrid implementan la interfaz ObjectGridLifecycleListener. Estos plug-ins se invocan automáticamente cuando cambia el ciclo de vida de la BackingMap o ObjectGrid padre. Para obtener más información sobre los plug-ins de ciclo de vida, consulte el tema Gestión de ciclos de vida de plug-ins.

Puede esperar ampliar los paquetes utilizando los métodos de ciclo de vida o escuchas de suceso en las siguientes tareas comunes:
  • Inicio y detención de recursos, como por ejemplo hebras o suscriptores de mensajería.
  • Si se especifica que se produzca una notificación cuando los plug-ins de igual se actualicen, lo que permite acceso directo al plug-in y la detección de los cambios.

Siempre que acceda a otro plug-in directamente, acceda a ese plug-in mediante el contenedor OSGi para asegurarse de que todas las partes del sistema hagan referencia al plug-in correcto. Si, por ejemplo, algún componente de la aplicación almacena en la memoria caché o hace referencia directamente a una instancia de un plug-in, mantendrá su referencia a esa versión del plug-in, incluso después de que el plug-in se haya actualizado dinámicamente. Este comportamiento puede causar problemas relacionados con la aplicación así como fugas de memoria. Por consiguiente, escriba código que dependa de plug-ins dinámicos que obtienen la referencia utilizando la semántica OSGi, getService(). Si la aplicación debe almacenar en memoria caché uno o varios plug-ins, escucha los sucesos de ciclo de vida utilizando las interfaces ObjectGridLifecycleListener y BackingMapLifecycleListener. La aplicación debe poder renovar también su memoria caché cuando sea necesario, en modalidad de seguridad de hebra.

Todos los plug-ins de eXtreme Scale utilizados con OSGi también deben implementar las interfaces BackingMapPlugin u ObjectGridPlugin respectivas. Los plug-ins nuevos, como la interfaz MapSerializerPlugin, imponen esta práctica. Estas interfaces proporcionan al entorno de ejecución de eXtreme Scale y a OSGi una interfaz coherente para inyectar el estado en el plug-in y controlar su ciclo de vida.

Utilice esta tarea para especificar que se produzca una notificación cuando se actualicen plug-ins de igual. Puede crear una fábrica de escuchas que genere una instancia de escucha.

Procedimiento

Resultados

Al implementar la interfaz ObjectGridPlugin o BackingMapPlugin, eXtreme Scale puede controlar el ciclo de vida del plug-in en los momentos correctos.

Al implementar la interfaz ObjectGridLifecycleListener o BackingMapLifecycleListener, el plug-in se registra automáticamente como escucha de los sucesos de ciclo de vida ObjectGrid o BackingMap asociados. El suceso INITIALIZING se utiliza para señalar que todos los plug-ins ObjectGrid y BackingMap se han inicializado y están disponibles para buscarse y utilizarse. El suceso ONLINE se utiliza para señalar que el ObjectGrid está en línea y listo para iniciar el proceso de sucesos.