Was sind Interceptors in Java EE?

Lesezeit: 3 Minuten

Benutzeravatar von Umair
Umair

Ich versuche, mein Konzept über Interceptors in Java EE zu klären. Ich habe die Java EE-Spezifikation gelesen, bin aber etwas verwirrt. Bitte geben Sie mir einen nützlichen Link oder ein Tutorial, das mein Konzept klären könnte. Wie, wann, warum verwenden wir Abfangjäger?

Abfangjäger werden verwendet, um bereichsübergreifende Anliegen wie Protokollierung, Auditing und Sicherheit aus der Geschäftslogik zu implementieren.

In Java EE 5 waren Interceptors nur auf EJBs erlaubt. In Java EE 6 wurden Interceptors zu einer eigenen neuen Spezifikation, die auf einer höheren Ebene abstrahiert wurde, sodass sie allgemeiner auf einen breiteren Satz von Spezifikationen in der Plattform angewendet werden kann.

Sie fangen Aufrufe und Lebenszyklusereignisse auf einer zugeordneten Zielklasse ab. Grundsätzlich ist ein Interceptor eine Klasse, deren Methoden aufgerufen werden, wenn Geschäftsmethoden in einer Zielklasse aufgerufen werden, Lebenszyklusereignisse wie Methoden, die das Bean erstellen/zerstören, oder eine EJB-Timeout-Methode auftreten. Die CDI-Spezifikation definiert einen typsicheren Mechanismus zum Zuordnen von Interceptoren zu Beans mithilfe von Interceptor-Bindungen.

Suchen Sie nach einem funktionierenden Codebeispiel unter:

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

Java EE 7 hat auch eine neue Annotation @Transactional in der Java Transaction API eingeführt. Dies ermöglicht Container-verwaltete Transaktionen außerhalb einer EJB. Diese Annotation wird als Interceptor-Bindung definiert und von der Java-EE-Laufzeitumgebung implementiert. Ein funktionierendes Beispiel von @Transactional finden Sie unter:

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

Benutzeravatar von Sundararaj Govindasamy
Sundararaj Govindasamy

Abfangjäger sind daran gewöhnt AOP-Fähigkeit hinzufügen zu verwalteten Bohnen.

Wir können Interceptor mit der Annotation @Interceptor an unsere Klasse anhängen.
Immer wenn eine Methode in unserer Klasse aufgerufen wirdfängt der angefügte Interceptor diesen Methodenaufruf ab und führt seine Interceptor-Methode aus.

Dies kann mit der Annotation @AroundInvoke erreicht werden (siehe Beispiel unten).

Methodenabfangjäger

Wir können Lebenszyklusereignisse einer Klasse (Objekterstellung, Zerstörung usw.) mit der Annotation @AroundConstruct abfangen.

Hauptunterschied zwischen Interceptor und Servlet-Filter Wir können Interceptor außerhalb von WebContext verwenden, aber Filter sind spezifisch für Webanwendungen.

Häufige Verwendungszwecke von Abfangjägern sind Protokollierung, Auditing und Profilerstellung.

Für eine detailliertere Einführung können Sie diesen Artikel lesen.
https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors/

Benutzeravatar von blackpanther
schwarzer Panther

Ich mag diese Definition: Interceptoren sind Komponenten, die Aufrufe von EJB-Methoden abfangen. Sie können zum Auditieren und Protokollieren verwendet werden, wenn auf EJBs zugegriffen wird.

In einer anderen Situation können sie in einer Situation verwendet werden, in der wir überprüfen müssen, ob ein Client die Berechtigung oder Freigabe hat, eine Transaktion für ein bestimmtes Objekt in der Datenbank auszuführen. Nun, hier kommen Abfangjäger ins Spiel; Sie können prüfen, ob der Client/Benutzer diese Berechtigung hat, indem sie prüfen, ob er/sie diese Methode für dieses Datenbankobjekt oder EJB aufrufen kann.

Ich würde mir aber trotzdem folgendes anschauen Artikel und die folgende Lernprogramm um sich ein Bild davon zu machen, wie sie in einer Java EE-Einstellung/-Umgebung verwendet werden.

Benutzeravatar von Ruwan Prasad
Ruwan Prasad

Sie können Interceptor für die Stellen verwenden, an denen Sie einige Aufgaben ausführen möchten, bevor Sie eine Anfrage an die Controller-Klasse senden und bevor Sie eine Anfrage an eine Antwort senden. Beispiel: Wenn Sie glauben, dass Sie das Authentifizierungstoken validieren möchten, bevor Sie in diesem Fall eine Anfrage an die Controller-Klasse senden, können Sie Intercepters verwenden. Beispielcode:

@Component
public class AuthInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse 
response, Object handler) throws Exception {
    //Here you can write code to validate the auth token.
    }
}

1430990cookie-checkWas sind Interceptors in Java EE?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy