web-dev-qa-db-fra.com

Que sont les intercepteurs dans Java EE?

J'essaie de clarifier mon concept concernant les intercepteurs dans Java EE. J'ai lu Java EE mais je suis un peu confus à ce sujet. Merci de me fournir un lien utile ou un tutoriel qui pourrait éclaircir mon concept Comment, quand, pourquoi utilisons-nous des intercepteurs?

39
Umair

Les intercepteurs sont utilisés pour implémenter des problèmes transversaux, tels que la journalisation, l'audit et la sécurité, à partir de la logique métier.

Dans Java EE 5, les intercepteurs n'étaient autorisés que sur les EJB. Dans Java EE 6, les intercepteurs sont devenus une nouvelle spécification, abstraite à un niveau supérieur afin qu'il peut être appliqué de manière plus générique à un ensemble plus large de spécifications de la plate-forme.

Ils interceptent des invocations et des événements de cycle de vie sur une classe cible associée. Fondamentalement, un intercepteur est une classe dont les méthodes sont appelées lorsque des méthodes métier d'une classe cible sont invoquées, que des événements de cycle de vie tels que des méthodes qui créent/détruisent le bean se produisent ou qu'une méthode de délai d'expiration EJB se produit. La spécification CDI définit un mécanisme de type sécurisé pour associer des intercepteurs à des beans utilisant des liaisons d'intercepteur.

Recherchez un exemple de code fonctionnel sur:

https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors

Java EE 7 a également introduit une nouvelle annotation @Transactional dans Java API de transaction. Cela vous permet d’avoir des transactions gérées par conteneur en dehors d’un EJB. Cette annotation est définie comme une liaison intercepteur et implémentée par = Java EE runtime. Un exemple de travail de @Transactional est à:

https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope

47
Arun Gupta

Les intercepteurs sont utilisés pour ajouter la capacité AOP aux beans gérés.

Nous pouvons attacher Interceptor à notre classe en utilisant l'annotation @Interceptor. Chaque fois qu'une méthode de notre classe est appelée , l'intercepteur attaché intercepte cette invocation de méthode et exécute sa méthode d'intercepteur.

Ceci peut être réalisé en utilisant l'annotation @AroundInvoke (voir l'exemple ci-dessous).

Method Interceptors

Nous pouvons intercepter les événements du cycle de vie d'une classe (création d'objet, destruction, etc.) à l'aide de l'annotation @AroundConstruct.

Différence principale entre Interceptor et Filtres de servlet est Nous pouvons utiliser Interceptor en dehors de WebContext , mais les filtres sont spécifiques aux applications Web.

Les utilisations courantes des intercepteurs sont la journalisation, l'audit et le profilage.

Pour une introduction plus détaillée, vous pouvez lire cet article. https://abhirockzz.wordpress.com/2015/01/03/Java-ee-interceptors/

10

J'aime cette définition: les intercepteurs sont des composants qui interceptent les appels aux méthodes EJB. Ils peuvent être utilisés pour l'audit et la journalisation au fur et à mesure de l'accès aux EJB.

Dans une autre situation, ils peuvent être utilisés dans une situation où nous devons vérifier si un client dispose de l'autorité ou de l'autorisation nécessaire pour exécuter une transaction sur un objet particulier de la base de données. Eh bien, c’est là que les intercepteurs sont utiles; ils peuvent vérifier si le client/utilisateur dispose de cette autorité en vérifiant s'il peut appeler cette méthode sur cet objet de base de données ou cet EJB.

Cependant, j’aimerais quand même jeter un coup d’œil sur les éléments suivants article et les éléments suivants tutoriel pour avoir une idée de la façon dont ils sont utilisés dans un Java = Paramètre EE/environnement.

10
blackpanther