GEDOPLAN

CDI Events können mit Hilfe einer Event Source gefeuert werden, z. B.

@Inject
@Urgent
Event<Message> urgentMessageEventSource;
...
urgentMessageEventSource.fire(new Message(...));

Im angedeuteten Code ist @Urgent ein Qualifier und Message eine beliebige Java-Klasse.

Bis CDI 3 kann zum Versenden von Events auch ein BeanManager genutzt werden:

@Inject
BeanManager beanManager;
...
beanManager.fireEvent(new Message(...), new AnnotationLiteral<Urgent>() {});

BeanManager#fireEvent steht in CDI 4 nicht mehr zur Verfügung. Stattdessen kann getEvent/select/fire verwendet werden:

beanManager.getEvent().select(new AnnotationLiteral<Urgent>() {}).fire(new Message(...));

Die neue Form hat den Vorteil, dass statt fire auch fireAsync zur Verfügung steht und somit auch asynchron versendet werden kann.