EJB
EJB steht für "Enterprise JavaBeans". Es handelt sich dabei um eine Spezifikation für serverseitige, wiederverwendbare Komponenten im Java-EE (früher J2EE) Umfeld. EJBs sind ein Bestandteil der Java Platform, Enterprise Edition und bieten eine Möglichkeit, skalierbare, verteilte und transaktionale Geschäftslogik in Java-Anwendungen zu implementieren.
Es gibt verschiedene Typen von EJBs:
Session Beans: Sie repräsentieren Geschäftslogik und können in zwei Hauptkategorien unterteilt werden:
- Stateless Session Beans: Diese haben keinen konversationalen Zustand zwischen Methodenaufrufen. Jedes Mal, wenn eine Methode aufgerufen wird, kann es von jedem beliebigen Stateless Bean-Instanz behandelt werden.
- Stateful Session Beans: Diese behalten einen Zustand für einen bestimmten Client während der Sitzung. Wenn der Client weitere Methodenaufrufe tätigt, werden sie von derselben Bean-Instanz bearbeitet, die den Zustand des Clients speichert.
Entity Beans (veraltet in neueren Java EE-Versionen): Sie waren dafür vorgesehen, eine direkte Abbildung von Datenbanktabelleneinträgen auf Java-Objekte zu ermöglichen. Die meisten modernen Java-Anwendungen verwenden stattdessen das Java Persistence API (JPA) für ORM (Objekt-Relationales Mapping) und den Zugriff auf Datenbanken.
Message-Driven Beans (MDB): Diese sind asynchrone Komponenten, die Nachrichten von Message Queues (z.B. über JMS - Java Message Service) empfangen und darauf reagieren.
Einige der Hauptmerkmale und Vorteile von EJBs sind:
- Deklarative Transaktionsverwaltung: Erlaubt Entwicklern, Transaktionen durch Annotationen oder XML-Konfigurationen zu steuern, ohne manuellen Transaktionscode schreiben zu müssen.
- Sicherheit: EJBs bieten eine deklarative Sicherheitsverwaltung, bei der Rollen und Berechtigungen über Annotationen oder XML-Konfigurationen definiert werden können.
- Verteilung: EJBs können auf einem Server ausgeführt und von einem Client auf einem anderen Server aufgerufen werden, wodurch verteilte Anwendungen erleichtert werden.
- Lebenszyklusverwaltung: Der EJB-Container übernimmt das Erzeugen, Verwalten und Zerstören von Bean-Instanzen, wodurch sich der Entwickler auf die Geschäftslogik konzentrieren kann.
Obwohl EJBs einmal als Standard für die Geschäftslogik in Java EE-Anwendungen galten, haben viele Entwickler und Organisationen sie aufgrund ihrer Komplexität und Schwere zugunsten leichterer und flexiblerer Frameworks und Ansätze (z.B. Spring) vermieden. Mit der Weiterentwicklung von Java EE (jetzt bekannt als Jakarta EE) und der Einführung von CDI (Contexts and Dependency Injection) und anderen Technologien wurde der EJB-Ansatz etwas vereinfacht, aber viele der ursprünglichen Kritikpunkte bleiben bestehen.