Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
10.2.10.2. Utiliser les intercepteurs avec le CDI
Exemple 10.19. Intercepteurs sans le CDI
Sans le CDI, les intercepteurs ont deux problèmes.
- Le bean doit indiquer l'implémentation de l'intercepteur directement.
- Chaque bean de l'application doit indiquer l'ensemble des intercepteurs dans l'ordre qui convient. Cela fait que l'ajout ou le retrait d'intercepteurs sur la base d'une application prend beaucoup de temps et comporte un risque d'erreur non négligeable.
@Interceptors({ SecurityInterceptor.class, TransactionInterceptor.class, LoggingInterceptor.class }) @Stateful public class BusinessComponent { ... }
Procédure 10.7. Utiliser les intercepteurs avec le CDI
Définir le type de liaison d'intercepteur.
@InterceptorBinding @Retention(RUNTIME) @Target({TYPE, METHOD}) public @interface Secure {}
Marquer l'implémentation de l'intercepteur.
@Secure @Interceptor public class SecurityInterceptor { @AroundInvoke public Object aroundInvoke(InvocationContext ctx) throws Exception { // enforce security ... return ctx.proceed(); } }
Utiliser l'intercepteur dans votre code commercial.
@Secure public class AccountManager { public boolean transfer(Account a, Account b) { ... } }
Activer l'intercepteur dans votre déploiement, en l'ajoutant à votre fichier
META-INF/beans.xml
ouWEB-INF/beans.xml
.<beans> <interceptors> <class>com.acme.SecurityInterceptor</class> <class>com.acme.TransactionInterceptor</class> </interceptors> </beans>
Les intercepteurs sont appliqués dans l'ordre indiqué.
Résultat :
Le CDI simplifie votre code d'intercepteur et simplifie l'application de votre code commercial.