www.wikidata.de-de.nina.az
Jakarta Enterprise Beans fruher Enterprise JavaBeans EJB sind standardisierte Komponenten innerhalb der Java EE Plattform Sie vereinfachen die Entwicklung komplexer mehrschichtiger verteilter Softwaresysteme mit Java So konnen wichtige Konzepte fur Unternehmensanwendungen z B Transaktions Namens oder Sicherheitsdienste umgesetzt werden die fur die Geschaftslogik einer Anwendung notig sind Inhaltsverzeichnis 1 Komponenten 1 1 Entity Bean 1 2 Session Bean 1 3 Message Driven Bean 1 4 Web Services 1 5 Beispiel 2 Konfiguration Deployment Descriptor 3 Transaktionen 4 Version 3 0 4 1 Version 3 1 5 Siehe auch 6 Literatur 7 Weblinks 8 EinzelnachweiseKomponenten BearbeitenEnterprise JavaBeans gibt es in mehreren unterschiedlichen Auspragungen fur verschiedene Klassen von Anwendungsfallen Sie konnen entweder remote entfernt also uber Prozess und Rechnergrenzen hinweg oder lokal innerhalb einer VM angesprochen werden Entity Bean Bearbeiten Entity Beans modellieren die dauerhaften persistenten Daten des Systems Beispiele sind physisch vorhandene Dinge wie Benutzer Informationsstrukturen wie Adressen oder archivierte Vorgangsinformationen wie Rechnungen Sie reprasentieren z B einen Datensatz aus einer Datenbank Die Persistenz kann entweder vom Bean Entwickler selbst programmiert Bean Managed Persistence BMP oder von einem EJB Container bereitgestellt werden Container Managed Persistence CMP Bei CMP wird im Deployment Descriptor siehe unten unter anderem der Name eines abstrakten Schemas definiert was ublicherweise dem Namen einer Datenbanktabelle entspricht in der EJBs einer Klasse abgelegt werden Von der Version 5 an unterstutzt Java EE ein Attachment Detachment und Reattachment Die Entity Bean ist nun ein POJO dessen Persistenz mit Hilfe des EntityManagers gesteuert werden kann Das bekannte Java EE Entwurfsmuster Datentransferobjekt engl data transfer object kurz DTO ist somit aus technischer Sicht nicht mehr erforderlich da nun Geschaftsobjekte uber verschiedene Schichten beispielsweise zu einem Client transportiert werden konnten Datentransferobjekte dienten zuvor der Abstraktion von Geschaftsobjekten also der Reprasentation reiner Daten ohne Verhalten und der Entkopplung verschiedener Anwendungsschichten Session Bean Bearbeiten Session Beans bilden insbesondere Vorgange ab die der Nutzer mit dem System durchfuhrt Sie bedienen sich haufig mehrerer Entity Beans um die Auswirkungen des Prozesses darzustellen Man unterscheidet zustandslose stateless und zustandsbehaftete stateful Session Beans Eine zustandsbehaftete Session Bean hat ein eigenes Gedachtnis Sie kann Informationen aus einem Methodenaufruf speichern damit sie bei einem spateren Aufruf einer anderen oder der gleichen Methode wieder zur Verfugung stehen Die Zustandsbehaftung wird durch die Vergabe einer eindeutigen ID umgesetzt uber diese ID konnen die zustandsbehafteten stateful Session Beans unterschieden werden Im Gegensatz dazu mussen einer zustandslosen Session Bean bei jedem Aufruf alle Informationen als Parameter ubergeben werden die fur die Abarbeitung dieses Aufrufs benotigt werden Da eine zustandslose Session Bean keine Informationen speichern kann ist sie nicht von anderen Session Beans der gleichen Klasse unterscheidbar sie hat also keine eigene Identitat Message Driven Bean Bearbeiten Message Driven Beans sind diejenigen Komponenten die EJB Systeme fur asynchrone Kommunikation zuganglich machen Hierzu wird der Java Message Service JMS verwendet Diese Sorte von Beans wird z B haufig fur die Kommunikation mit Legacy Systemen genutzt Auch fur die Ausfuhrung von klassischerweise asynchron auszufuhrenden Operationen z B dem Verschicken einer Mail von deren Erfolg und Dauer die Performanz einer ubergeordneten Anwendung nicht abhangen sollte bieten sich Message Driven Beans an Web Services Bearbeiten Ab Version 1 4 erlaubt die J2EE Spezifikation den Aufruf von Stateless Session Beans als Web Services und beschreibt einen Mechanismus der die Schnittstelle eines Web Service auf die Schnittstelle einer EJB abbildet Beispiel Bearbeiten Anschaulich kann man die unterschiedlichen Komponenten an einem Onlineshop erklaren Eine zustandslose Session Bean konnte etwa die Daten eines Suchergebnisses nach einem bestimmten Artikel beinhalten Eine solche Suchliste muss nicht persistent gespeichert sein sondern kann nach einmaliger Betrachtung verworfen werden Eine zustandsbehaftete Session Bean ist der Warenkorb in den man die Artikel hineinlegt Dieser sollte zumindest fur den Zeitraum gespeichert werden in dem der Kunde auf der Seite stobert und eventuell weitere Artikel hineinlegt Eine Entity Bean speichert letztendlich die Kundendaten mit denen sich der Kunde bei dem Shop registriert hat Diese mussen wiederum persistent gespeichert werden sonst musste man sich bei jedem Besuch der Seite neu registrieren 1 Konfiguration Deployment Descriptor BearbeitenDer EJB Standard definiert neben den Enterprise Java Beans auch einen sogenannten Deployment Descriptor frei ubersetzt Einsatz Beschreibung Dieser Deployment Descriptor ist eine XML Datei in der vor Version 3 des Standards immer die eigentliche EJB Definition stattfand da hier der Zusammenhang zwischen den verschiedenen Java Klassen und Interfaces aus denen eine EJB besteht hergestellt werden musste Ab Version 3 konnen die meisten Angaben fur die zuvor der Deployment Descriptor notwendig war mit Annotationen direkt im Java Code implementiert werden Dadurch kann der Deployment Descriptor ganz entfallen Er kann aber auch dazu benutzt werden die Angaben in den Annotations zu uberschreiben Neben diesen standardisierten Eigenschaften definieren EJB Container zusatzliche containerspezifische Eigenschaften Transaktionen BearbeitenEine wesentliche Funktion von EJB Containern ist die Verwaltung von Transaktionen Jede Methode einer EJB hat ein sogenanntes Transaktionsattribut das festlegt welche Art von Transaktion die EJB benotigt und unterstutzt NotSupported Die Methode unterstutzt keine Transaktionen Der EJB Container gibt keinen Transaktionskontext an die Methode und unterbricht die Transaktion bis zum Ende des Methodenaufrufs Wenn die Methode andere EJBs aufruft so laufen auch diese ohne Transaktion Required Default Die Methode kann nur innerhalb einer Transaktion aufgerufen werden Falls der Aufrufer nicht Teil einer Transaktion ist beginnt der EJB Container eine neue Transaktion die nach dem Verlassen der Methode wieder beendet wird Dies ist gemass dem convention over configuration Prinzip das Standardverhalten sofern der Entwickler kein Transaktionsattribut angibt Supports Die Methode kann sowohl innerhalb als auch ausserhalb einer Transaktion aufgerufen werden Im ersten Fall entspricht das Verhalten NotSupported im zweiten Required RequiresNew Die Methode benotigt eine eigene Transaktion Der EJB Container beginnt beim Aufruf der Methode immer eine neue Transaktion die mit der Ruckkehr aus dem Aufruf endet Ist der Aufrufer bereits Teil einer Transaktion so wird diese vorubergehend ausgesetzt Mandatory Der Aufrufer muss Teil einer Transaktion sein Andernfalls meldet der EJB Container einen Fehler indem er eine Ausnahme Exception vom Typ javax transaction TransactionRequiredException wirft Never Die Methode darf niemals innerhalb einer Transaktion aufgerufen werden Falls doch wirft der EJB Container eine Ausnahme Version 3 0 BearbeitenDie Komplexitat und die fehlende Objektorientiertheit der EJB Technologie waren stets Kritikpunkte Aus diesem Grunde wurde eine neue Spezifikation entwickelt die eine deutliche Vereinfachung bringen soll Neuerungen in EJB 3 0 ab Java EE 5 sind unter anderen Entity Beans sind obsolet geworden stattdessen sollen Persistent Entities verwendet werden Einfuhrung von Annotationen wodurch fast alle Angaben im Deployment Descriptor ersetzt werden und dieser oft entfallen kann Vereinfachung der EJB API Es werden keine Home Interfaces mehr benotigt Schnittstellen wie SessionBean oder MessageDrivenBean mussen nicht mehr implementiert werden Alle Bean Klassen sind ausschliesslich POJOs Das heisst der Code muss nicht durch EJB Implementierungsdetails verschmutzt werden die benotigten Informationen werden als Annotationen deklariert Nur noch benotigte Ruckruffunktionen callback functions mussen implementiert werden Version 3 1 Bearbeiten EJB 3 1 ab Java EE 6 bringt zusatzlich folgende Neuerungen Es gibt Singletons von denen in einer Anwendung in einem Server nur eine Instanz existiert Fur die Singletons wird eine eigene Unterstutzung fur Nebenlaufigkeit implementiert Bean Managed Concurrency oder Container Managed Concurrency Asynchrone Aufrufe von Business Methoden sind moglich Es werden keinerlei Interfaces mehr benotigt No Interface View Solche EJBs konnen dann zwar nur lokal verwendet werden dafur aber stark vereinfacht direkt von den JSF Seiten EJBs haben genau definierte JNDI Namen in verschiedenen Namensraumen java global java app und java module EJBs mussen nicht mehr in einer separaten ejb jar Datei verteilt werden sondern konnen direkt in das war Archiv mitpaketiert werden Siehe auch BearbeitenXDoclet als Vorganger zu Annotationen JavaBeansLiteratur BearbeitenO Ihns S Heldt R Wirdemann H Zuzmann Enterprise JavaBeans komplett Oldenbourg 2003 ISBN 3 486 27379 5 Oliver Ihns Dierk Harbeck Stefan M Heldt Holger Koschek Jo Ehm Carsten Sahling Roman Schlommer EJB 3 professionell dpunkt Heidelberg 2007 ISBN 978 3 89864 431 0 Olaf Zwintzscher Software Komponenten im Uberblick W3L 2004 ISBN 3 937137 60 2 Debu Panda Reza Rahman Derek Lane EJB 3 in Action Manning Publications 2007 ISBN 1 933988 34 7Weblinks BearbeitenJava EE 7 Offizielles Tutorial von Sun Oracle englisch behandelt Enterprise Beans ab Teil VII Kapitel 32 EJB 3 0 Implementierung Memento vom 6 November 2006 im Internet Archive von Oracle englisch EJB 3 0 Implementierung von JBoss englisch Mastering Enterprise JavaBeans umfassende Einfuhrung zu EJB 2 1 als Buch zum kostenlosen Download Einzelnachweise Bearbeiten Nach Tanenbaum van Steen Distributed Systems Principles and Paradigms 2006 Abgerufen von https de wikipedia org w index php title Jakarta Enterprise Beans amp oldid 236345744