CDI 1.1 defines a set of lifecycle events related to different context
within the application. We see a need to also define cluster lifecycle
events for applications.
These events could, for example, be used for subscribing/allocating
and unsubscribing/deallocating external services/resources.
More specifically, a @Cluster event that gets fired when an
application gets @Initialized in the cluster, that is, post
@Application @Initialized. And another @Cluster event that gets fired
when the application get @Destroyed in the cluster, that is, pre
@Application @Destroyed. These events only fires once per application
and cluster, independent on how many cluster instances exists.
Events are fault tolerant meaning that events are not affected by
failing instances going out-of-service, as long as the cluster is
still working. Notice that the @Destroyed event is of course only
invoked if the cluster terminates gracefully.