An event source is implemented in the Java programming language, using
either the Java 2 Platform, Standard Edition (J2SE) or the Java 2 Platform,
Enterprise Edition (J2EE). An event source must submit valid events conforming
to the Common Base Event model. Each event is represented as a Java object.
Emitters and emitter factories
An event source does
not interact directly with the event server; instead, it interacts with an
object called an emitter (an implementation of the com.ibm.events.emitter.Emitter
interface). An emitter is a local object that provides methods for sending
events.
In general, the emitter handles the details of event transmission;
the developer of an event source does not need to be concerned about the event
server location, the filter settings, or the underlying transmission mechanism.
Details such as these are governed by the
emitter factory, an object
configured by an administrator and bound in a Java Naming and Directory Interface
(JNDI) namespace. An emitter factory is an an instance of com.ibm.events.emitter.EmitterFactory
and is used to create emitter objects. It also defines the behavior of the
emitters it creates; it includes settings for the following:
- The preferred transaction mode. This setting specifies whether
the emitter attempts to send each event in a new transaction or within the
current transaction. An event source can change this setting for a particular
emitter or event submission, but the profile specifies the default value.
(This setting is valid only in a J2EE container; the J2SE platform does not
provide transaction controls.)
- The preferred synchronization mode. This setting specifies whether
events are sent using synchronous or asynchronous transmission. Synchronous
transmission means that the sendEvent() method does not return control
to the caller until the event has been processed; asynchronous transmission means
that the method returns immediately after the event is submitted, and the
caller has no further information about event processing. An event source
can change this setting for an emitter or for an event submission, but the
default value is specified by the profile.
- The transmission profiles to use. A transmission profile is a configuration
object that defines a specific transmission mechanism for sending events to
the event server. An emitter factory profile can specify two transmission
profiles, one for synchronous transmission and one for asynchronous transmission.
An event source cannot change the transmission profiles used by an emitter.
- The filter configuration to use for the emitter. The filter configuration
defines what filtering plug-in is used to filter events submitted to the emitter.
The Common Event Infrastructure includes a default filter plug-in, but you
can also implement your own filter plug-in if you want to use a different
filtering engine.
An administrator can create multiple emitter factory profiles,
each one defining a different emitter configuration. An event source obtains
an emitter using the emitter factory associated with an existing emitter factory
profile; therefore, all emitters created by a particular emitter factory will
have the same default behavior. For more information, see Obtaining an
emitter.
Note: If your event source is running with Java
2 security enabled, and you want to generate your own globally unique identifiers
(GUIDs), you must modify your policy file to enable correct processing. Add
the following entries:
permission java.io.FilePermission "${java.io.tmpdir}${/}guid.lock",
"read, write, delete";
permission java.net.SocketPermission "*", "resolve";