Privacy Policy Cookie Policy Terms and Conditions Enterprise JavaBeans - Wikipedia

Enterprise JavaBeans

aus Wikipedia, der freien Enzyklopädie

Enterprise JavaBeans (EJB) sind standardisierte Komponenten innerhalb eines JEE-Servers (Java Enterprise Edition). Sie vereinfachen die Entwicklung komplexer mehrschichtiger verteilter Softwaresysteme mittels Java. Mit Enterprise JavaBeans können wichtige Konzepte für Unternehmensanwendungen, z. B. Transaktions-, Namens- oder Sicherheitsdienste umgesetzt werden, die für die Geschäftslogik einer Anwendung nötig sind.

Inhaltsverzeichnis

[Bearbeiten] Komponenten

Enterprise JavaBeans gibt es in mehreren unterschiedlichen Ausprägungen für verschiedene Klassen von Anwendungsfällen. Sie können entweder remote („entfernt“, also über Prozess- und Rechnergrenzen hinweg) oder lokal (innerhalb einer VM) angesprochen werden.

[Bearbeiten] Entity Bean

Entity Beans modellieren die dauerhaften (persistenten) Daten des Systems. Beispiele sind physikalisch vorhandene Dinge wie Benutzer, Informationsstrukturen wie Adressen oder archivierte Vorgangsinformationen wie Rechnungen. Sie repräsentieren z. B. einen Datensatz aus einer Datenbank.

Die Persistenz kann entweder vom Bean-Entwickler selbst programmiert („Bean Managed Persistence“, BMP) oder vom 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 üblicherweise dem Namen einer Datenbanktabelle entspricht, in der EJBs einer Klasse abgelegt werden.

Von der Version 5 an unterstützt JEE ein Attachment, Detachment und Reattachment. Die Entity Bean ist nun ein POJO, dessen Persistenz mit Hilfe des EntityManagers gesteuert werden kann. Das bekannte JEE Design Pattern "Datentransferobjekt" (englisch DataTransferObjekt, kurz: DTO) ist somit aus technischer Sicht nicht mehr erforderlich, da nun Geschäftsobjekte über verschiedene Schichten, beispielsweise zu einem Client, transportiert werden könnten. Datentransferobjekte dienen der Abstraktion von Geschäftsobjekten (also der Repräsentation reiner Daten ohne Verhalten), und der Entkopplung verschiedener Anwendungsschichten.

[Bearbeiten] Session Bean

Session Beans bilden insbesondere Vorgänge ab, die der Nutzer mit dem System durchführt. Sie bedienen sich häufig 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 Gedächtnis. Sie kann Informationen aus einem Methodenaufruf speichern, damit sie bei einem späteren Aufruf einer anderen (oder der gleichen) Methode wieder zur Verfügung stehen. Die Zustandsbehaftung wird durch die Vergabe einer eindeutigen ID umgesetzt, über diese ID können die zustandsbehafteten (stateful) Session Beans unterschieden werden.

Im Gegensatz dazu müssen einer zustandslosen Session Bean bei jedem Aufruf alle Informationen als Parameter übergeben werden, die für die Abarbeitung dieses Aufrufs benötigt 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 Identität.

[Bearbeiten] Message Driven Bean

Message Driven Beans sind diejenigen Komponenten, die EJB-Systeme für asynchrone Kommunikation zugänglich machen. Hierzu wird der Java Message Service verwendet. Diese Sorte von Beans wird z. B. häufig für die Kommunikation mit Legacy-Systemen genutzt.

[Bearbeiten] Web Services

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.

[Bearbeiten] Konfiguration (Deployment Descriptor)

Der EJB-Standard schreibt neben den Enterprise Java Beans auch einen sogenannten Deployment Descriptor (frei übersetzt „Einsatz-Beschreibung“) vor. Dieser Deployment Descriptor ist eine XML-Datei, in der Eigenschaften von EJBs definiert werden, die nicht hart codiert sind. Dazu zählen:

  • Name, Klasse und Schnittstellen einer EJB
  • Informationen darüber, ob bestimmte Methoden unter bestimmten Arten von Transaktionen aufgerufen werden dürfen oder müssen
  • Referenzen auf Ressourcen, die der Bean vom Container bereitgestellt werden müssen, z. B. Datenquellen
  • Referenzen auf andere EJBs oder Webservices
  • optional die Definition der Endpunkte von Webservices als die, die EJBs angeboten werden sollen
  • für Entity Beans mit Container Managed Persistence der Name ihres abstrakten Schemas sowie die Definition ihrer persistenten Felder und Beziehungen untereinander; außerdem können Queries für bestimmte Suchmethoden (sogenannte Finders) definiert werden

Neben diesen standardisierten Eigenschaften definieren EJB-Container zusätzliche containerspezifische Eigenschaften. Zum Zeitpunkt der Installation können diese Eigenschaften je nach Container auf unterschiedliche Art angegeben werden – in Java-Properties-Dateien, XML-Dateien oder interaktiv.

[Bearbeiten] Ausblick

Die Komplexität 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 sind unter anderen:

  • Einführung von Annotations
  • Vereinfachung der EJB-API
    • Es werden keine Home Interfaces mehr benötigt.
    • Schnittstellen wie SessionBean oder MessageDrivenBean müssen nicht mehr implementiert werden.
    • Alle Bean-Klassen sind ausschließlich POJOs. Das heißt, der Code muss nicht durch EJB-Implementierungsdetails „verschmutzt“ werden, die benötigten Informationen werden als Annotations deklariert.
    • Nur noch benötigte Rückruffunktionen (callback function) müssen implementiert werden.

[Bearbeiten] Literatur

  • O. Ihns, S. Heldt, R. Wirdemann, H. Zuzmann: Enterprise JavaBeans komplett, Oldenbourg, 2003, ISBN 3486273795
  • Olaf Zwintzscher: Software-Komponenten im Überblick, W3L, 2004, ISBN 3937137602

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -