Un origen de sucesos se implementa en el lenguaje de programación Java,
utilizando la plataforma J2SE (Java 2 Platform, Standard Edition) o J2EE (Java 2
Platform, Enterprise Edition). Un origen de sucesos debe enviar sucesos válidos que
forman el modelo de suceso básico común. Cada suceso se representa como un objeto
Java.
Emisores y fábricas de emisores
Un origen de sucesos no
interacciona directamente con el servidor de sucesos; en lugar de ello, interacciona con
un objeto denominado emisor (una implementación de la interfaz
com.ibm.events.emitter.Emitter). Un emisor es un objeto local que proporciona
métodos para enviar sucesos.
En general, el emisor gestiona los detalles de
transmisión de sucesos; el desarrollador de un origen de sucesos no debe preocuparse
por la ubicación del servidor de sucesos, los valores de filtro ni el mecanismo de
transmisión subyacente. Los detalles de este tipo están gobernados por la
fábrica
de emisores, un objeto configurado por un administrador y enlazado a un espacio
de nombres JNDI (Java Naming and Directory Interface). Una fábrica de
emisores es una instancia de com.ibm.events.emitter.EmitterFactory que se utiliza
para crear objetos emisor. También define el comportamiento de los emisores que
crea; incluye valores para lo siguiente:
- La modalidad de transacción preferida. Este valor especifica si el
emisor intenta enviar cada suceso en una nueva transacción o dentro de la
transacción actual. Un origen de sucesos puede cambiar este valor para un emisor o
un envío de suceso en particular, pero el perfil especifica el valor predeterminado.
(Este valor sólo es válido en un contenedor J2EE; la plataforma J2SE no
proporciona controles de transacción.)
- La modalidad de sincronización preferida. Este valor especifica si los
sucesos se envían utilizando transmisión síncrona o asíncrona. La transmisión
síncrona significa que el método sendEvent() no devuelve el control al emisor de
la llamada hasta que se ha procesado el suceso; la transmisión asíncrona
significa que el método regresa inmediatamente después de haber
enviado el suceso,
y el emisor de la llamada no tiene más información sobre el proceso del suceso. Un
origen de sucesos puede cambiar este valor para un emisor o para un envío de suceso,
pero el valor predeterminado lo especifica el perfil.
- Los perfiles de transmisión que deben utilizarse. Un perfil de
transmisión es un objeto de configuración que define un mecanismo de transmisión
específico para enviar sucesos al servidor de sucesos. Un perfil de fábrica de
emisores puede enviar dos perfiles de transmisión, uno para la transmisión síncrona
y otro para la transmisión asíncrona. Un origen de sucesos no puede cambiar los
perfiles de transmisión utilizados por un emisor.
- La configuración de filtros que debe utilizar el emisor. La configuración de
filtros define qué conector de filtrado se utiliza para filtrar los sucesos enviados
por el emisor. Common Event Infrastructure
incluye un conector de filtro predeterminado, pero también puede implementar su
conector de filtro propio si desea utilizar un motor de filtrado distinto.
Un administrador puede crear varios perfiles de fábrica de emisores, y
cada perfil puede definir una configuración de emisor distinta. Un origen de sucesos
obtiene un emisor que utiliza la fábrica de emisores asociada con un perfil de
fábrica de emisores existente; por consiguiente, todos los emisores creados por una
fábrica de emisores predeterminada tendrán el mismo comportamiento predeterminado.
Para obtener más información, consulte Obtención de un emisor.
Nota: Si un
origen de sucesos se ejecuta con la seguridad Java 2 habilitada, y desea generar sus
propios identificadores exclusivos a nivel global (GUID), debe modificar el archivo
de política para permitir el proceso correcto. Añada las entradas siguientes:
permission java.io.FilePermission "${java.io.tmpdir}${/}guid.lock",
"read, write, delete";
permission java.net.SocketPermission "*", "resolve";