Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
+49 (0) 351/850 33-0

Events mit CDI und EJB 3.1, Teil 2

In meinem letzten Artikel habe ich beschrieben wie Ereignisse mittels CDI und Java EE 6 erzeugt und verarbeitet werden können. Neben der Steuerung des Transaktionskontextes  oder asynchronen Verarbeitung der Ereignisse können die Ereignisse auch mit Qualifiern ausgestatet werden. Diese lassen sich recht einfach definieren wie z.B.:

@Qualifier
@Target({ ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreRollback {

}

Anschliessen können die Ereignisse mit diesem Qualifier versehen werden indem die Annotation beim Injectionpoint mit angegeben wird:

@Inject
@IgnoreRollback
private Event<String> eventIgnoreRollback;

Wird nun ein Ereignis über eventIgnoreRollback erzeugt so wird dem Ereignis automatisch der Qualifier hinzugefügt. Die Listener-Methoden können nun mit den Qualifiern versehen werden um nun gezielt bestimmte Ereignisse zu verarbeiten. Besipielsweise lässt sich so eine Methode definieren die bei fehlgeschlagenenen Transaktionen die Ereignisse mit dem Qualifier IgnoreRollback verarbeitet. Es werden nur die Ereignisse mit dem Qualifier verarbeitet, andere werden ignoriert.

public void onEventAndIgnoreRollback(@Observes(during = TransactionPhase.AFTER_FAILURE) @IgnoreRollback String event) {

}

Neben der Annotierung des Injectionpoints besteht auch die Möglichkeit den Qualifier direkt beim Versand eines Ereignisses als Parameter mit zu übergeben. Damit kann der Kontext direkt angegeben werden.

Kommentar hinterlassen


Pin It on Pinterest