EJB

Enterprise Java Beans (EJB) ist ein JavaEE-Standard für Anwendungs-Komponenten für verteilte Software-Systeme. Diese laufen innerhalb eines EJB-Containers, üblicherweise in einem JavaEE Application Server. Mit Hilfe von EJB wird die Entwicklung komplexer Anwendungen vereinfacht. Dabei sind Technologien für das Transaktionsmanagement, Naming-Dienste und Zugriffsschutz bereits enthalten. Derzeit ist die Version 3.1 des EJB-Standards aktuell. Dieser wird in den Application Server Oracle/Sun Glassfish 3.1, JBoss AS 6.0, Apache Geronimo 3.0 und Caucho Resin 4.0 implementiert. EJBs sind seit Version 3.0 einfache Java Bean-Klassen (POJOs / plain old Java object), die mit Annotations um EJB-Aspekte erweitert werden.
Enterprise Java Beans
Man unterscheidet Enterprise Java Beans in 3 Gruppen: Entity Beans, Session Beans und Message Driven Beans. Mit Hilfe von Entity Beans wird das Daten-Modell der Anwendung beschrieben. Jedes Daten-Objekt wird durch eine eigene Bean-Klasse beschrieben und automatisch mit der zu Grunde liegenden Datenbank synchronisiert. Über einen OR-Mapper werden Einträge in der Datenbank somit zu Instanzen einer Java-Klasse und umgekehrt. Referenzen einer Entity Bean auf eine andere Entity Bean werden dabei als Fremdschlüsselbeziehungen automatisch angelegt und verwaltet. Die Anwendungsentwicklung wird dabei weitestgehend von der verwendeten Datenbank abstrahiert.
Enterprise Java Beans Daten-Modell
Session Beans sind Klassen, die benutzergesteuerte Anfragen abarbeiten und beantworten. Diese enthalten demnach reine Geschäftslogik. Man trennt diese weiter in zustandsbehaftete (stateful) und zustandslose (stateless) Session Beans. Stateful Session Beans können einen aktuellen Zustand speichern und bei der nächsten Anfrage wieder hervorrufen. Dies kann z.B. ein Warenkorb innerhalb eines Web-Shops sein. Stateless Session Beans können zwischen zwei Anfragen keine eigenen Daten speichern, ohne diese innerhalb der Datenbank abzulegen bzw. diese zu laden. Sie werden also für unabhängige, einmalige Aufgaben verwendet. Ein Beispiel dafür wäre der Dienst für eine Druckansicht, dessen Daten komplett aus der Datenbank geladen werden und als PDF gerendert werden.
Stateless Session Beans
Message Driven Beans arbeiten ebenso wie Session Beans reine Anwendungslogik ab, jedoch sind diese asynchron. Sie werden durch eine Nachricht im Java Message Service (JMS) angestoßen, laufen im Hintergrund ab und können keinen direkten Rückgabewert liefern. Sie werden üblicherweise für Hintergrund-Aufgaben bzw. langlaufende Prozesse verwendet, wie z.B. Maintainance-Dienste, Email-Versendung oder Reporting.

Seit EJB 3.1 gibt es außerdem noch Singleton Session Beans, welche jeweils nur eine einzelne Instanz innerhalb des EJB Containers haben können. Durch Container Managed Concurrency bzw. Bean Managed Concurrency wird sichergestellt, dass Aufrufe an diese einzelne Bean nacheinander ausgeführt werden. Diese Beans werden häufig für Anwendungs-globale Aufgaben wie z.B. Maintainance-Diensten ausgeführt.

Ihr Ansprechpartner