Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) y II
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Añadir Soporte de Notificación de Eventos

Prerequisito:

Deberías estar familiarizado con el modelo de eventos usado por el JNDI antes de leer esta sección. El modelo de eventos se cubre en la lección Notificación de Eventos.

Normalmente un proveedor de servicio soporta notificación de enventos cuando el servicio de nombres/directorio proporciona dicha característica. Sin embargo, un proveedor de servicio podría soportar notificación de eventos incluso si el servicio subyacente no lo hace. Simplemente necesita hacer más trabajo y quizás ofrecer la característica obligando a cambiar el servicio subyacente.

Introducción de la Arquitectura

La notificación de eventos se puede implementar de varias formas diferentes. Abajo tenemos una arquitectura de ejemplo. Sin embargo, que una funcione con nuestro proveedor de servicio dependerá de las características del servicio de nombres/directorio subyacente.

Para añadir soporte de notificación de eventos, necesitamos estos tres componentes:

  • Bookkeeper.
    Mantiene la lista de oyentes y es responsable de implementar los métodos de registro/desregistro de los interfaces EventContext y EventDirContext.
  • Notifier.
    Notifica un evento al oyente(s). Normalmente la ocurrencia de un evento la dispara un cambio asíncrono en el servicio subyacente. El notificador detecta el cambio (por ejemplo, mediante un mensaje del servicio subyacente o mediante la obtención de su estado) y pone un evento correspondiente en la cola de eventos.
  • Cola de Eventos.
    Mantiene una cola de eventos que han ocurrido y dispara eventos a los oyentes registrados.

Para implementar la notificación de eventos, nuestra implementación de contexto debe implementar los interfaes EventContext o EventDirContext. El bookkeeper podría ser una parte de la implementación de contexto o una utilidad usada por esta implementación. Cuando un programa registra un oyente, el bookkeeper graba el oyente y el objetivo en el que está interesado. Luego usa--crea o usa un thread de un almacen de threads-- un notifier para seguir el objetivo. Normalmente, el notifier es un thread que escucha los cambios del objetivo. Cuando el notifier detecta un cambio que lanzará un evento, crea un evento que contiene la imformación apropiada y lo pone en la cola de eventos. El notifier vuelve a escuchar los futuros cambios. La cola de eventos es monitorizada por un thread manejador de cola de eventos, cuyo trabajo es eliminar un evento de la cola y despacharlo a los oyentes apropiados.

Trucos de Implementación

Aquí hay algunos trucos que debemos tener en mente cuando desarrollemos nuestra implementación de contexto:

  • Manejar el Registro de Oyentes.
    El registro de oyentes está asociado con un ejemplar Context no con la represetnación del contexto en el servicio subyacente. Por ejemplo, supongamos que estámos usando un servicio LDAP. No podemos esperar registrar un oyente con uno de los ejemplares Context y eliminarlo de otro ejemplar Context, incluso si ámbos representan la misma entrada LDAP. Por lo tanto nuestra implementación debería mantener listas de oyentes separadas para ejemplares de Context diferentes.
  • Cuándo Des-registrar.
    Algunos eventos causan un des-registro automático. Si un oyente recibe una excepción o si se cierra el ejemplar Context con el que se han registrado, el oyente es des-registrado automáticamente y no recbirá más eventos. Nuestra implementación del notifier debería prestar atención a los eventos de excepción que genera y decirle al bookkeeper que des-registre a los oyentes que reciben dichas excepciones (sólo después de que hayan sido enviados los eventos de excepción).
  • Usar threads.
    Sin importar si nuestra elección sigue el ejemplo de arquitectura descrito en páginas anteriores, el soporte de notificación de eventos requiere el uso de threads. Además, estos threads manipulan datos compartidos como ejemplares de Context, colas de eventos y listas de oyentes. Debemos asegurarnos de tener un buen conocimiento del modelo de Threads en el lenguaje Java.

Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis