|Event<T>||Allows the application to fire events of a particular type.|
|Reception||Distinguishes conditional observer methods from observer methods which are always notified.|
|TransactionPhase||Distinguishes the various kinds of transactional observer methods from regular observer methods which are notified immediately.|
|ObserverException||Indicates that a checked exception was thrown by an observer method during event notification.|
|Annotation Types Summary|
|Observes||Identifies the event parameter of an observer method.|
Annotations and interfaces relating to events.
Beans may produce and consume events. Events allows beans to interact in a completely decoupled fashion, with no compile-time dependency between the interacting beans. Most importantly, it allows stateful beans in one architectural tier of the application to synchronize their internal state with state changes that occur in a different tier.
An event comprises:
Event interface is used to
The event object acts as a payload, to propagate state from producer to consumer. An event object is an instance of a concrete Java class with no type variables.
The event types of the event include all superclasses and interfaces of the runtime class of the event object. An event type may not contain a type variable.
The event qualifiers act as topic selectors, allowing the consumer to narrow the set of events it observes. An event qualfier may be an instance of any qualifier type.
An observer method allows the application to receive and respond to event notifications. It acts as event consumer, observing events of a specific type, with a specific set of qualifiers. Any Java type may be observed by an observer method.
An observer method will be notified of an event if:
If the observer method is a transactional observer method and there is a JTA transaction in progress when the event is fired, the observer method is notified during the appropriate transaction completion phase. Otherwise, the observer is notified when the event is fired.
The order in which observer methods are called is not defined, and so portable applications should not rely upon the order in which observers are called.
Observer methods may throw exceptions: