Cosa sono gli intercettori in Java EE?
Sto cercando di chiarire il mio concetto sugli intercettori in Java EE. Ho letto le specifiche Java EE ma sono un po ' confuso a riguardo. Per favore forniscimi qualche link utile o tutorial che potrebbe chiarire il mio concetto. Come, quando, Perché usiamo gli intercettori?
3 answers
Gli intercettori vengono utilizzati per implementare problemi trasversali, come la registrazione, il controllo e la sicurezza, dalla logica di business.
In Java EE 5, gli intercettori erano consentiti solo su EJB. In Java EE 6, gli intercettori sono diventati una nuova specifica a sé stante, astratta ad un livello superiore in modo che possa essere applicata in modo più generico a un insieme più ampio di specifiche nella piattaforma.
Intercettano le invocazioni e gli eventi del ciclo di vita su una classe target associata. Fondamentalmente, un interceptor è una classe i cui metodi vengono richiamati quando vengono richiamati i metodi aziendali su una classe di destinazione, si verificano eventi del ciclo di vita come i metodi che creano/distruggono il bean o si verifica un metodo di timeout EJB. La specifica CDI definisce un meccanismo di sicurezza del tipo per l'associazione degli intercettori ai bean utilizzando i binding degli intercettori.
Cerca un esempio di codice funzionante su:
Https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors
Java EE 7 anche introdotta una nuova annotazione @ Transactional in Java Transaction API. Ciò consente di avere transazioni gestite dal contenitore al di fuori di un EJB. Questa annotazione è definita come un'associazione interceptor e implementata dal runtime Java EE. Un esempio di lavoro di @ Transactional è a:
Https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope
Mi piace questa definizione: gli intercettori sono componenti che intercettano le chiamate ai metodi EJB. Possono essere utilizzati per il controllo e la registrazione come e quando si accede agli EJB.
In un'altra situazione, possono essere utilizzati in una situazione in cui è necessario verificare se un cliente ha l'autorità o l'autorizzazione per eseguire una transazione su un particolare oggetto nel database. Bene, questo è dove gli intercettori sono utili; possono verificare se il client / utente ha quell'autorità controllando se pu invocare quel metodo su quell'oggetto di database o EJB.
Tuttavia, vorrei ancora dare un'occhiata al seguente articolo e al seguente tutorial per avere un'idea di come vengono utilizzati in un'impostazione/ambiente Java EE.
Gli intercettori vengono utilizzati per aggiungere la capacità AOP ai bean gestiti.
Possiamo collegare Interceptor alla nostra classe usando @Interceptor annotation. Ogni volta che un metodo nella nostra classe viene chiamato, l'Intercettore collegato intercetterà l'invocazione del metodo ed eseguirà il suo metodo intercettore.
Questo può essere ottenuto usando l'annotazione @AroundInvoke ( vedi esempio sotto ).
Possiamo intercettare gli eventi del ciclo di vita di una classe (oggetto creazione, distruzione ecc.) usando @ AroundConstruct annotation.
La differenza principale tra Interceptor e Filtri Servlet è che possiamo usare Interceptor al di fuori di WebContext, ma i filtri sono specifici per le applicazioni Web.
Gli usi comuni degli intercettori sono la registrazione, il controllo e la profilazione.
Per un'introduzione più dettagliata, puoi leggere questo articolo. https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors /