Unternehmen JavaBeans

Unternehmen JavaBeans (EJB) ist eine geführte, Teilarchitektur der Server-Seite für den Modulaufbau von Unternehmensanwendungen.

Die EJB Spezifizierung ist eines von mehrerem Java APIs in Java EE Spezifizierung. EJB ist ein Modell der Server-Seite, das die Geschäftslogik einer Anwendung kurz zusammenfasst. Die EJB Spezifizierung wurde 1997 von IBM ursprünglich entwickelt und später durch Sonne-Mikrosysteme (EJB 1.0 und 1.1) 1999 angenommen und unter dem javanischen Gemeinschaftsprozess als JSR 19 (EJB 2.0), JSR 153 (EJB 2.1), JSR 220 (EJB 3.0) und JSR 318 (EJB 3.1) erhöht.

Die EJB Spezifizierung hat vor, eine Standardweise zur Verfügung zu stellen, den Zurückende-'Geschäfts'-Code durchzuführen, der normalerweise in Unternehmensanwendungen (im Vergleich mit dem 'Vorderende'-Schnittstelle-Code) gefunden ist. Solcher Code richtet dieselben Typen von Problemen, und Lösungen dieser Probleme werden häufig von Programmierern wiederholt wiederdurchgeführt. Unternehmen JavaBeans ist beabsichtigt, um solche allgemeinen Sorgen als Fortsetzung, transactional Integrität und Sicherheit auf eine Standardweise zu behandeln, Programmierer frei verlassend, sich auf das besondere Problem in der Nähe zu konzentrieren.

Entsprechend, die EJB Spezifizierungsdetails, wie ein Anwendungsserver zur Verfügung stellt:

Zusätzlich, das Unternehmen Spezifizierung von JavaBean definiert die Rollen, die durch den EJB Behälter und den EJBs gespielt sind, sowie wie man den EJBs in einem Behälter einsetzt. Bemerken Sie, dass der aktuelle EJB, über den 3.1 Spezifizierung nicht ausführlich berichtet, wie ein Anwendungsserver Fortsetzung (eine Aufgabe zur Verfügung stellt, die an die JPA Spezifizierung delegiert ist), aber stattdessen Details, wie Geschäftslogik mit den durch den Anwendungsserver angebotenen Fortsetzungsdienstleistungen leicht integrieren kann.

Um EJB Bohnen Java einzusetzen und zu führen, kann EE Anwendungsserver verwendet werden, weil diese einen EJB Behälter standardmäßig einschließen. Wechselweise kann ein eigenständiger Behälter wie OpenEJB verwendet werden.

Schnelle Adoption ist durch die Kritik gefolgt

Die Vision wurde von EJB-Verfechtern wie IBM und Sonne-Mikrosysteme und Unternehmen überzeugend präsentiert JavaBeans wurden von großen Gesellschaften schnell angenommen. Probleme waren schnell, um mit anfänglichen Versionen zu erscheinen. Einige Entwickler haben gefunden, dass die APIs des EJB Standards viel komplizierter waren, als jene Entwickler daran gewöhnt waren. Ein Überfluss an karierten Ausnahmen, erforderlichen Schnittstellen und der Durchführung der Bohnenklasse als eine abstrakte Klasse war ungewöhnlich und für Programmierer gegenintuitiv. Die Probleme, die der EJB Standard versuchte, zu richten, wie, mit dem Gegenstand Verwandtschafts-kartografisch darzustellen, und transactional Integrität, waren jedoch kompliziert viele Programmierer haben gefunden, dass der APIs so schwierig war, zu einer Wahrnehmung führend, dass EJBs Kompliziertheit eingeführt hat, ohne echte Vorteile zu liefern.

Außerdem haben Geschäfte gefunden, dass das Verwenden von EJBs, um Geschäftslogik kurz zusammenzufassen, eine Leistungsstrafe gebracht hat. Das ist, weil die ursprüngliche Spezifizierung nur entfernte Methode-Beschwörung durch CORBA berücksichtigt hat (und fakultativ andere Protokolle), wenn auch die große Mehrheit von kommerziellen Anwendungen wirklich diese verteilte Rechenfunktionalität nicht verlangt. Der EJB 2.0 Spezifizierung hat diese Sorge durch das Hinzufügen des Konzepts lokaler Schnittstellen gerichtet, die direkt ohne Leistungsstrafen durch Anwendungen genannt werden konnten, die über vielfache Server nicht verteilt wurden.

Das Kompliziertheitsproblem hat fortgesetzt, die Annahme von EJB zu hindern. Obwohl Entwickler-Werkzeuge es leicht gemacht haben, EJBs durch das Automatisieren der meisten wiederholenden Aufgaben zu schaffen und zu verwenden, haben diese Werkzeuge es etwas leichter nicht gemacht zu erfahren, wie man die Technologie verwendet. Außerdem war eine Gegenbewegung auf dem bodenständigen Niveau unter Programmierern aufgewachsen. Die Haupterzeugnisse dieser Bewegung waren der so genannte 'Leichtgewichtler' (d. h. im Vergleich mit EJB) Technologien dessen Überwintern (für die Fortsetzung und mit dem Gegenstand Verwandtschafts-kartografisch darzustellen), und Frühlingsfachwerk (der einem Stellvertreter und viel weniger wortreicher Weise zur Verfügung gestellt hat, Geschäftslogik zu verschlüsseln). Trotz des Ermangelns an der Unterstützung von Großindustrien sind diese Technologien in der Beliebtheit gewachsen und wurden durch Geschäfte angenommen.

EJBs wurden durch die javanische Zoohandlungsdemo der Sonne Java BluePrints gefördert. Der Gebrauch von EJBs war das umstrittene und einflussreiche Java EE Programmierer wie Rod Johnson haben Positionen als Antwort auf die javanische Zoohandlung genommen, die sich bemüht hat, EJB-Gebrauch zu bagatellisieren. Sonne selbst hat eine Alternative genannt javanische Datengegenstände erzeugt. Später Überwintern EJBs, javanische Datenformen und viele der zu Grunde liegenden Ideen wurden verbunden, um EJB 3.0 zu bilden, der die javanische Fortsetzungs-API und Einfachen Alten javanischen Gegenstände (POJOs) eingeschlossen hat. EJB 3.0 war weniger schweres Gewicht als EJB 2.0 und hat mehr Wahlen Entwicklern zur Verfügung gestellt.

Wiedererfindung EJBs

Allmählich ist eine Industrieeinigkeit erschienen, dass der primäre Vorteil der ursprünglichen EJB Spezifizierung — transactional Integrität über verteilte Anwendungen ermöglichend — vom beschränkten Gebrauch zu den meisten Unternehmensanwendungen und der Funktionalität war, die durch das einfachere Fachwerk wie der Frühling geliefert ist, und Überwintern Sie, war nützlicher. Entsprechend war der EJB 3.0 Spezifizierung (JSR 220) eine radikale Abfahrt von seinen Vorgängern im Anschluss an dieses neue Paradigma. Es zeigt einen klaren Einfluss vom Frühling in seinem Gebrauch von POJOs und seiner Unterstützung für die Abhängigkeitseinspritzung, um Konfiguration und Integration von heterogenen Systemen zu vereinfachen. Gavin King, der Schöpfer dessen Überwintert, hat am EJB 3.0 Prozess teilgenommen und ist ein freimütiger Verfechter der Technologie. Viele Eigenschaften ursprünglich darin Überwintern wurden in der javanischen Fortsetzungs-API, dem Ersatz für Entitätsbohnen in EJB 3.0 vereinigt. Der EJB 3.0 Spezifizierung verlässt sich schwer auf den Gebrauch von Anmerkungen, eine Eigenschaft, die zur javanischen Sprache mit seiner 5.0 Ausgabe und Tagung über die Konfiguration hinzugefügt ist, um viel weniger wortreichen Codierstil zu ermöglichen.

Entsprechend in praktischen Begriffen ist EJB 3.0 sehr fast eine völlig neue API, wenig Ähnlichkeit mit den vorherigen EJB Spezifizierungen habend.

Beispiel

Die folgenden Shows ein grundlegendes Beispiel dessen, wie was ein EJB im Code aussieht:

@Local

öffentliche Schnittstelle CustomerServiceLocal {\

Leere addCustomer (Kundenkunde);

}\

@Stateless

öffentliche Klasse CustomerService führt CustomerServiceLocal {durch

@PersistenceContext

privater EntityManager entityManager;

öffentliche Leere addCustomer (Kundenkunde) {

entityManager.persist (Kunde);

}

}\</Quelle>

Der obengenannte definiert eine lokale Schnittstelle und die Durchführung einer Dienstklasse, für ein Kundengegenstand (über O/R anzudauern, der kartografisch darstellt). Der EJB passt darauf auf, den Fortsetzungszusammenhang und den addCustomer zu führen Methode ist transactional und vor dem Faden sicher standardmäßig. Wie demonstriert, konzentriert sich der EJB nur auf die Geschäftslogik und Fortsetzung und weiß nichts über jede besondere Präsentation.

Solch ein EJB kann durch eine Klasse in z.B der Webschicht wie folgt verwendet werden:

@Named

@RequestScoped

öffentliche Klasse CustomerBacking {\

@EJB

privater CustomerServiceLocal customerService;

öffentliche Schnur addCustomer {\

customerService.addCustomer (Kunde);

context.addMessage (...);//abgekürzt für die Kürze

geben Sie "customer_overview" zurück;

}\

}\</Quelle>

Der obengenannte definiert JavaServer Gesichter (JSF) sich rückwärts bewegende Bohne, in der der EJB mittels der @EJB Anmerkung eingespritzt wird. Seine addCustomer Methode wird normalerweise zu einem UI Bestandteil wie ein Knopf gebunden. Gegen den EJB enthält die sich rückwärts bewegende Bohne keine Geschäftslogik oder Fortsetzungscode, aber delegiert solche Sorgen an den EJB. Die sich rückwärts bewegende Bohne weiß wirklich über eine besondere Präsentation, deren der EJB keine Kenntnisse hatte.

Typen von Unternehmensbohnen

Ein EJB Behälter hält zwei Haupttypen von Bohnen:

  • Sitzungsbohnen, die entweder "Stateful", "Staatenlos" oder "Singleton" sein können und über irgendeinen ein Vorortszug (derselbe JVM) oder Entfernt (verschiedener JVM) Schnittstelle oder direkt ohne eine Schnittstelle zugegriffen werden können, in welchem Fall lokale Semantik gelten. Alle Sitzungsbohnen unterstützen asynchrone Ausführung für alle Ansichten (local/remote/no-interface).
  • Nachricht Gesteuerte Bohnen (auch bekannt als MDBs oder Nachricht Bohnen). MDBs unterstützen auch asynchrone Ausführung, aber über ein Nachrichtenübermittlungsparadigma.

Sitzungsbohnen

Stateful Sitzungsbohnen

Stateful Sitzungsbohnen sind Geschäftsgegenstände, die Staat haben: D. h. sie gehen nach, von dem dem Benennen des Kunden sie sich überall in einer Sitzung befassen und so der Zugang zum Bohnenbeispiel auf nur einen Kunden auf einmal ausschließlich beschränkt wird. Im Falle dass der gleichzeitige Zugang zu einer einzelnen Bohne irgendwie versucht wird, veröffentlicht der Behälter jene Bitten in Fortsetzungen, aber über die @AccessTimeout Anmerkung kann der Behälter eine Ausnahme stattdessen werfen. Sitzungsbohnenstaat von Stateful kann (passivated) automatisch durch den Behälter angedauert werden, um Gedächtnis zu befreien, nachdem der Kunde auf die Bohne für einige Zeit nicht zugegriffen hat. Der JPA hat sich ausgestreckt Fortsetzungszusammenhang wird durch Stateful Sitzungsbohnen ausführlich unterstützt.

Beispiele:

  • Das Überprüfen in einem Webladen könnte durch eine stateful Sitzungsbohne behandelt werden, die seinen Staat verwenden würde, um das nachzugehen, wo der Kunde im Abreise-Prozess ist, vielleicht Schlösser auf den Sachen haltend, kauft der Kunde (aus einem Systemarchitektur-Gesichtspunkt, es würde weniger ideal sein, um den Kunden jene Schlösser führen zu lassen)
,

Staatenlose Sitzungsbohnen

Staatenlose Sitzungsbohnen sind Geschäftsgegenstände, die mit ihnen vereinigten Staat nicht haben. Jedoch wird der Zugang zu einem einzelnen Bohnenbeispiel noch auf nur einen Kunden auf einmal beschränkt, und so wird der gleichzeitige Zugang zur Bohne verboten. Im Falle dass der gleichzeitige Zugang zu einer einzelnen Bohne irgendwie der Behälter einfach Wege jede Bitte zu einem verschiedenen Beispiel versucht wird. Das macht eine staatenlose Sitzungsbohne automatisch vor dem Faden sicher. Beispiel-Variablen können während eines einzelnen Methode-Anrufs von einem Kunden zur Bohne verwendet werden, aber, wie man versichert, wird der Inhalt jener Beispiel-Variablen über verschiedene Kundenmethode-Anrufe nicht bewahrt. Beispiele von Staatenlosen Sitzungsbohnen werden normalerweise vereint. Wenn ein zweiter Kunde auf eine spezifische Bohne direkt zugreift, nachdem eine Methode-Aufforderung davon gemacht von einem ersten Kunden fertig gewesen ist, könnte es dasselbe Beispiel bekommen. Der Mangel an oben, um ein Gespräch mit dem rufenden Kunden aufrechtzuerhalten, macht sie weniger quellenintensiv als stateful Bohnen.

Beispiele:
  • Das Senden einer E-Mails zur Kundenunterstützung könnte durch eine staatenlose Bohne behandelt werden, da das eine einmalige Operation und nicht ein Teil eines Mehrschritt-Prozesses ist.
  • Ein Benutzer einer Website, die auf einen Kasten "des keep me informed of future updates" klickt, kann einen Anruf zu einer asynchronen Methode der Sitzungsbohne auslösen, den Benutzer zu einer Liste in der Datenbank der Gesellschaft hinzuzufügen (dieser Anruf ist asynchron, weil der Benutzer nicht zu warten braucht, um über seinen Erfolg oder Misserfolg informiert zu werden).
  • Das Holen vielfacher unabhängiger Stücke von Daten für eine Website, wie eine Liste von Produkten und die Geschichte des aktuellen Benutzers könnte durch asynchrone Methoden einer Sitzungsbohne ebenso behandelt werden (diese Anrufe sind asynchron, weil sie in der Parallele diesen Weg durchführen können, der potenziell Leistung vergrößert). In diesem Fall wird die asynchrone Methode ein Zukünftiges Beispiel zurückgeben.

Singleton-Sitzungsbohnen

Singleton-Sitzungsbohnen sind Geschäftsgegenstände, die einen globalen geteilten Staat innerhalb eines JVM haben. Der gleichzeitige Zugang zu demjenigen und nur Bohnenbeispiel kann vom Behälter (Behältergeführte Parallelität, CMC) oder von der Bohne selbst (Bohnengeführte Parallelität, BMC) kontrolliert werden. CMC kann mit der @Lock Anmerkung abgestimmt werden, die benennt, ob ein gelesenes Schloss oder eine Schreibsperre für einen Methode-Anruf verwendet werden. Zusätzlich können Singleton-Sitzungsbohnen ausführlich bitten, realisiert zu werden, wenn der EJB Behälter mit der @Startup Anmerkung aufspringt.

Beispiele:
  • Das Laden einer globalen täglichen Preisliste, die dasselbe für jeden Benutzer sein wird, könnte mit einer Singleton-Sitzungsbohne getan werden, da das die Anwendung verhindern wird, die dieselbe Abfrage zu einer Datenbank immer wieder tun muss.

Nachricht gesteuerte Bohnen

Gesteuerte Bohnen der Nachricht sind Geschäftsgegenstände, deren Ausführung durch Nachrichten statt durch Methode-Anrufe ausgelöst wird. Die Nachricht Gesteuerte Bohne wird unter anderen verwendet, um eine hohe Abstraktion der einfachen Nutzung für die niedrigere Ebene JMS (javanische Nachricht Dienst) Spezifizierung zur Verfügung zu stellen. Es kann JMS Nachrichtenwarteschlangen oder Nachrichtenthemen unterschreiben, der normalerweise über das activationConfig Attribut der @MessageDriven Anmerkung geschieht. Sie wurden in EJB hinzugefügt, um Ereignis-gesteuerte Verarbeitung zu erlauben. Verschieden von Sitzungsbohnen lässt ein MDB keinen Kunden (Local/Remote/No-interface) ansehen, d. h. Kunden können kein MDB Beispiel schauen. Es horcht gerade auf jede eingehende Nachricht auf, zum Beispiel, eine JMS Warteschlange oder Thema und bearbeitet sie automatisch. Nur JMS Unterstützung ist durch Java EE Spekulation erforderlich, aber Nachricht Gesteuerte Bohnen kann andere Nachrichtenübermittlungsprotokolle unterstützen. Solche Protokolle können asynchron sein, aber können auch gleichzeitig sein. Da Sitzungsbohnen auch gleichzeitig oder, der Hauptunterschied zwischen Sitzung - und Nachricht asynchron sein können, sind gesteuerte Bohnen nicht der synchronicity, aber der Unterschied zwischen (Gegenstand orientiert) das Methode-Benennen und Nachrichtenübermittlung.

Beispiele:
  • Das Senden einer Konfigurationsaktualisierung zu vielfachen Knoten könnte durch das Senden einer JMS Nachricht an ein 'Nachrichtenthema' getan werden und konnte durch eine Nachricht Gesteuerte Bohne behandelt werden, diesem Thema zuhörend (das Nachrichtenparadigma wird hier verwendet, da der Absender Kenntnisse über den Betrag von Verbrauchern oder ihrer Position oder sogar ihrem genauen Typ nicht zu haben braucht).
  • Das Einreichen eines Jobs zu einer Arbeitstraube könnte durch das Senden einer JMS Nachricht an eine 'Nachrichtenwarteschlange' getan werden und konnte auch durch eine Nachricht Gesteuerte Bohne behandelt werden, aber dieses Mal einer Warteschlange zuhörend (werden das Nachrichtenparadigma und die Warteschlange verwendet, da sich der Absender nicht sorgen muss, welcher Arbeiter den Job durchführt, aber braucht es wirklich Versicherung, dass ein Job nur einmal durchgeführt wird).
  • Die Verarbeitung des Timings von Ereignissen vom Quarzplaner kann durch eine Nachricht Gesteuerte Bohne behandelt werden; wenn ein Quarzabzug schießt, wird der MDB automatisch angerufen. Seit Java weiß EE über Quarz standardmäßig nicht, ein JCA Quellenadapter wäre erforderlich, und der MDB würde mit einer Verweisung darauf kommentiert.

Entitätsbohnen (missbilligt)

Vorherige Versionen von EJB haben auch einen Typ der als eine Entitätsbohne bekannten Bohne verwendet. Diese wurden Gegenstände verteilt, die beharrlichen Staat haben. Wie man sagte, verwendeten Bohnen, in denen ihr Behälter den beharrlichen Staat geführt hat, Container-Managed Persistence (CMP), wohingegen, wie man sagte, Bohnen, die ihren eigenen Staat geführt haben, Bean-Managed Persistence (BMP) verwendeten. In EJB 3.0 wurden Entitätsbohnen durch die javanische Fortsetzungs-API ersetzt, die zu seiner eigenen Spezifizierung völlig getrennt wurde, um der EJB Spezifizierung zu erlauben, sich nur auf die "Kernsitzungsbohne und nachrichtengesteuerten Bohnenteilmodelle und ihre Kunden-API" zu konzentrieren. Entitätsbohnen sind noch in EJB 3.1 für umgekehrt die Vereinbarkeit verfügbar, aber sie sind offiziell vorgeschlagen worden, um von der Spezifizierung (über einen genannten Prozess entfernt zu werden, "beschneidend").

Andere Typen von Unternehmensbohnen sind vorgeschlagen worden. Zum Beispiel richten Unternehmensmediabohnen (JSR 86) die Integration von Multimediagegenständen in Java EE Anwendungen.

Ausführung

EJBs werden in einem EJB Behälter normalerweise aber nicht notwendigerweise innerhalb eines Anwendungsservers aufmarschiert. Die Spezifizierung beschreibt, wie ein EJB mit seinem Behälter aufeinander wirkt, und wie Kundencode mit der container/EJB Kombination aufeinander wirkt. Die EJB durch Anwendungen verwendeten Klassen werden ins Paket eingeschlossen. (Das Paket ist eine Dienstleister-Schnittstelle verwendet nur durch EJB Behälterdurchführungen.)

Kunden von EJB Bohnen realisieren jene Bohnen direkt über Javas neuen Maschinenbediener nicht, aber haben stattdessen, um eine Verweisung über den EJB Behälter zu erhalten. Diese Verweisung ist dann nicht eine Verweisung auf die Durchführungsbohne selbst, aber auf eine Vertretung, die entweder dynamisch die lokale oder entfernte Geschäftsschnittstelle durchführt, dass der Kunde gebeten hat oder dynamisch einen Subtyp der wirklichen Bohne durchführt. Die Vertretung kann dann zur Schnittstelle oder Bohne direkt geworfen werden. Wie man sagt, hat ein Kunde eine 'Ansicht' auf dem EJB, und die lokale Schnittstelle, die entfernte Schnittstelle und der Bohnentyp selbst entsprechen beziehungsweise der lokalen Ansicht, entfernten Ansicht und Ansicht ohne Schnittstellen.

Diese Vertretung ist erforderlich, um dem EJB Behälter die Gelegenheit zu geben, Querschneiden (AOP ähnliche) Dienstleistungen einer Bohne wie Transaktionen, Sicherheit, Auffangen, Einspritzungen, remoting usw. durchsichtig zur Verfügung zu stellen.

Z.B ruft ein Kunde eine Methode auf einer Vertretung an, die dann zuerst eine Transaktion mit der Hilfe des EJB Behälters anfangen und dann die wirkliche Bohnenmethode nennen wird. Wenn die wirkliche Bohnenmethode zurückkehrt, beendet die Vertretung die Transaktion (d. h. durch die Begehung davon oder das Tun eines rollback) und überträgt Kontrolle zurück dem Kunden.

Transaktionen

EJB Behälter müssen sowohl geführte SAURE Transaktionen des Behälters als auch geführte Transaktionen der Bohne unterstützen.

Behältergeführte Transaktionen (CMT) sind standardmäßig für Anrufe zu Sitzungsbohnen aktiv. D. h. keine ausführliche Konfiguration ist erforderlich. Dieses Verhalten kann durch die Bohne über Anmerkungen Aussage-abgestimmt werden, und wenn erforderlich kann solche Konfiguration später im Aufstellungsdeskriptor überritten werden. Einstimmung schließt das Ausschalten von Transaktionen für die ganze Bohne oder spezifischen Methoden oder Anforderung alternativer Strategien für die Transaktionsfortpflanzung und das Starten oder das Verbinden einer Transaktion ein. Solche Strategien befassen sich hauptsächlich damit, was geschehen sollte, wenn eine Transaktion ist oder nicht bereits im Gange zurzeit ist, wird die Bohne genannt. Die folgenden Schwankungen werden unterstützt:

Wechselweise kann die Bohne auch über eine Anmerkung erklären, dass sie Transaktionen programmatisch über die JTA API behandeln will. Diese Verfahrensweise wird Bean Managed Transactions (BMT) genannt, da die Bohne selbst die Transaktion statt des Behälters behandelt.

Ereignisse

JMS (javanische Nachricht Dienst) wird verwendet, um Nachrichten von Bohnen bis Kunden zu senden, Kunden asynchrone Nachrichten von diesen Bohnen erhalten zu lassen.

MDBs kann verwendet werden, um Nachrichten von Kunden zu erhalten, die asynchron irgendeinen ein JMS verwenden

Warteschlange oder ein Thema.

Das Namengeben und Verzeichnisdienstleistungen

Als eine Alternative zur Einspritzung können Kunden eines EJB eine Verweisung auf den Sitzungsbohnenproxygegenstand (der EJB Stummel) erhalten, JNDI verwendend. Diese Alternative kann in Fällen verwendet werden, wo Einspritzung, wie nichtgeführte Bohnen oder das eigenständige entfernte Java SE Kunden nicht verfügbar ist, oder wenn es notwendig ist, der Bohne programmatisch zu bestimmen, vorzuherrschen.

JNDI Namen für EJB Sitzungsbohnen werden durch den EJB Behälter über das folgende Schema zugeteilt:

(Einträge in eckigen Klammern zeigen fakultative Teile an)

Eine einzelne Bohne kann durch jeden Namen erhalten werden, der die obengenannten Muster abhängig von der 'Position' des Kunden vergleicht. Kunden in demselben Modul wie die erforderliche Bohne können das Modul-Spielraum und die größeren Spielraume, die Kunden in derselben Anwendung verwenden, wie die erforderliche Bohne das app Spielraum und höher usw. verwenden kann.

Z.B würde Code, der in demselben Modul wie die Bohne von CustomerService (wie gegeben, durch das Beispiel gezeigt früher in diesem Artikel) läuft, den folgenden Code verwenden, um eine (lokale) Verweisung darauf zu erhalten:

CustomerServiceLocal customerService =

(CustomerServiceLocal) neuer InitialContext .lookup ("java:module/CustomerService");

</Quelle>

Remoting/distributed Ausführung

EJB Sitzungsbohnen haben wohl durchdachte Unterstützung für remoting.

Für die Kommunikation mit einem Kunden wird es auch auf der javanischen Programmiersprache geschrieben eine Sitzungsbohne kann eine entfernte Ansicht über einen @Remote kommentierte Schnittstelle ausstellen. Das erlaubt jenen Bohnen, von Kunden in anderem JVMs genannt zu werden, der selbst auf anderen (entfernten) Systemen gelegen werden kann. Aus dem Gesichtswinkel vom EJB Behälter ist jeder Code in einem anderen JVM entfernt.

Staatenlos - und Sitzungsbohnen von Singleton kann auch eine "Webdienst-Kundenansicht" für die entfernte Kommunikation über WSDL und SEIFE oder einfachen XML ausstellen. Das folgt dem JAX-RPC und den JAX-WS Spezifizierungen. JAX-RPC Unterstützung wird jedoch für die zukünftige Eliminierung vorgeschlagen. Um JAX-WS zu unterstützen, wird die Sitzungsbohne mit der @WebService Anmerkung und den Methoden kommentiert, die entfernt mit der @WebMethod Anmerkung ausgestellt werden sollen.

Obwohl die EJB Spezifizierung Aussetzung als ERHOLSAME Webdienste in jedem Fall nicht erwähnt und keine ausführliche Unterstützung für diese Form der Kommunikation hat, unterstützt die JAX-RS Spezifizierung wirklich EJB ausführlich. Im Anschluss an die JAX-RS Spekulation, Staatenlos - und Sitzungsbohnen von Singleton kann Wurzelmittel über die @Path Anmerkung sein, und EJB Geschäftsmethoden können zu Quellenmethoden über den @GET, @PUT, @POST und @DELETE Anmerkungen kartografisch dargestellt werden. Das zählt jedoch als eine "Webdienst-Kundenansicht" nicht, die exklusiv für JAX-WS und JAX-RPC verwendet wird.

Die Kommunikation über Webdienste ist für Kunden typisch, die nicht auf der javanischen Programmiersprache geschrieben sind, aber ist auch für javanische Kunden günstig, die Schwierigkeiten haben, den EJB Server über eine Brandmauer zu erreichen. Zusätzlich kann gestützte Kommunikation des Webdienstes von javanischen Kunden verwendet werden, um die geheimnisvollen und schlecht-definierten Voraussetzungen für die so genannten "Kundenbibliotheken" zu überlisten; eine Reihe von Glas-Dateien, die ein javanischer Kunde auf seinem Klassenpfad haben muss, um mit dem entfernten EJB Server zu kommunizieren. Diese Kundenbibliotheken kollidieren potenziell Bibliotheken, die der Kunde bereits haben kann (zum Beispiel, wenn der Kunde selbst auch ein volles Java EE Server ist) und, wie man hält, solch ein Konflikt ein sehr harter oder unmögliches ist, um sich aufzulösen.

Nachricht Gesteuerte Bohnen hat keine spezifische Unterstützung für remoting, aber Zuhörer zu Endpunkten zu sein (z.B. JMS Warteschlangen) sie sind implizit entfernte Bestandteile auf Grund von den Eigenschaften beliebigen Typs des Endpunkts, dem sie zuhören.

Sicherheit

Der EJB Behälter ist dafür verantwortlich sicherzustellen, dass der Kundencode genügend Zugriffsrechte auf einen EJB hat. Sicherheitsaspekte können auf eine EJB Bohne über Anmerkungen Aussage-angewandt werden.

Vermächtnis

Hausschnittstellen und erforderliche Geschäftsschnittstelle

Mit EJB 2.1 und früher musste jeder EJB eine javanische Durchführungsklasse und zwei javanische Schnittstellen zur Verfügung stellen. Der EJB Behälter hat Beispiele der javanischen Durchführungsklasse geschaffen, um die EJB Durchführung zur Verfügung zu stellen. Die javanischen Schnittstellen wurden durch den Kundencode des EJB verwendet.

Die zwei Schnittstellen, gekennzeichnet als das Haus und die Entfernte Schnittstelle, haben die Unterschriften der entfernten Methoden des EJB angegeben. Die Methoden wurden in zwei Gruppen gespalten:

Klassenmethoden: Nicht gebunden an ein spezifisches Beispiel, wie diejenigen, die verwendet sind, um ein EJB Beispiel (Fabrikmethode) zu schaffen oder eine vorhandene Entität EJB zu finden (sieh EJB Typen, oben). Diese wurden durch die Hausschnittstelle erklärt.

Beispiel-Methoden: Das sind an ein spezifisches Beispiel gebundene Methoden. Sie werden in die Entfernte Schnittstelle gelegt.

Erforderlicher Aufstellungsdeskriptor

Mit EJB 2.1 und früher hat die EJB Spezifizierung verlangt, dass ein Aufstellungsdeskriptor da gewesen ist. Das war erforderlich, um einen Mechanismus durchzuführen, der EJBs erlaubt hat, auf eine konsequente Weise unabhängig von der spezifischen EJB Plattform aufmarschiert zu werden, die gewählt wurde. Information darüber, wie die Bohne aufmarschiert werden sollte (wie der Name des Hauses oder der entfernten Schnittstellen, ob und wie man die Bohne in einer Datenbank usw. versorgt) musste im Aufstellungsdeskriptor angegeben werden.

Der Aufstellungsdeskriptor ist ein XML Dokument, das einen Zugang für jeden sich aufzumarschierenden EJB hat. Dieses XML Dokument gibt die folgende Information für jeden EJB an:

  • Name der Hausschnittstelle
  • Javanische Klasse für die Bohne (Geschäftsgegenstand)
  • Javanische Schnittstelle für die Hausschnittstelle
  • Javanische Schnittstelle für den Geschäftsgegenstand
  • Beharrlicher Laden (nur für Entitätsbohnen)
  • Sicherheitsrollen und Erlaubnis
  • Stateful oder Stateless (für Sitzungsbohnen)

Alte EJB Behälter von vielen Verkäufern haben mehr Aufstellungsinformation verlangt als das in der EJB Spezifizierung. Sie würden die Zusatzinformation als getrennte XML Dateien oder ein anderes Konfigurationsdateiformat verlangen. Ein EJB Plattform-Verkäufer hat allgemein ihre eigenen Werkzeuge zur Verfügung gestellt, die diesen Aufstellungsdeskriptor lesen würden, und vielleicht eine Reihe von Klassen erzeugt haben, die das jetzt missbilligte Haus und die Entfernten Schnittstellen durchführen würden.

Seit EJB 3.0 (JSR 220) wird der XML Deskriptor durch den javanischen Anmerkungssatz in der Unternehmensbohnendurchführung ersetzt (am Quellniveau), obwohl es noch möglich ist, einen XML Deskriptor statt (oder zusätzlich zu) die Anmerkungen zu verwenden. Wenn ein XML Deskriptor und Anmerkungen beide auf dasselbe Attribut innerhalb einer Unternehmensbohne angewandt werden, überreitet die XML Definition die entsprechende Quellniveau-Anmerkung, obwohl einige XML Elemente auch zusätzlich sein können (z.B, wird ein activation-config-property in XML mit einem verschiedenen Namen als bereits definiert über eine @ActivationConfigProperty Anmerkung hinzugefügt, anstatt alle vorhandenen Eigenschaften zu ersetzen).

Behälterschwankungen

Mit EJB 3.1 anfangend, definiert die EJB Spezifizierung zwei Varianten des EJB Behälters; eine volle Version und eine beschränkte Version. Die beschränkte Version klebt an einer richtigen Teilmenge der Spezifizierung genannt EJB 3.1 Lite und ist ein Teil Javas EE 6's Webprofil (der selbst eine Teilmenge des vollen Javas EE 6 Spezifizierung ist).

EJB 3.1 Lite schließt Unterstützung für die folgenden Eigenschaften aus:

  • Entfernte Schnittstellen
  • RMI-IIOP Zwischenfunktionsfähigkeit
  • JAX-WS Webdienst-Endpunkte
  • EJB Zeitmesser-Dienst (@Schedule, @Timeout)
  • Asynchrone Sitzungsbohnenbeschwörungen (@Asynchronous)
  • Nachrichtengesteuerte Bohnen

Versionsgeschichte

EJB 3.1, endgültige Ausgabe (2009-12-10)

JSR 318. Der Zweck des Unternehmens JavaBeans 3.1 Spezifizierung soll weiter die EJB Architektur durch das Reduzieren seiner Kompliziertheit aus dem Gesichtspunkt des Entwicklers vereinfachen, während er auch neue Funktionalität als Antwort auf die Bedürfnisse nach der Gemeinschaft hinzufügt:

  • Lokale Ansicht ohne Schnittstelle (Ansicht ohne Schnittstellen)
  • Das.war-Verpacken von EJB Bestandteilen
  • EJB Lite: Definition einer Teilmenge von EJB
  • Tragbarer EJB globaler JNDI nennt
  • Singleton (Singleton-Sitzungsbohnen)
  • Anwendungsinitialisierung und Stilllegungsereignisse
  • EJB Zeitmesser-Diensterhöhungen
  • Einfacher Asynchrony (@Asynchronous für Sitzungsbohnen)

EJB 3.0, endgültige Ausgabe (2006-05-11)

JSR 220 - Hauptänderungen:

Diese Ausgabe hat es viel leichter gemacht, EJBs, mit 'Anmerkungen' aber nicht den komplizierten 'Aufstellungsdeskriptoren zu schreiben, die' in der Version 2.x verwendet sind. Der Gebrauch des Hauses und der entfernten Schnittstellen und ejb-jar.xml war Datei auch in dieser Ausgabe nicht mehr erforderlich, durch eine Geschäftsschnittstelle und eine Bohne ersetzt worden sein, die die Schnittstelle durchführt.

EJB 2.1, endgültige Ausgabe (2003-11-24)

JSR 153 - Hauptänderungen:

  • (Neue) Webdienst-Unterstützung: Staatenlose Sitzungsbohnen können über SOAP/HTTP angerufen werden. Außerdem kann ein EJB auf einen Webdienst mit der neuen Dienstverweisung leicht zugreifen.
  • EJB (neuer) Zeitmesser-Dienst: Ereignis-basierter Mechanismus, um EJBs in spezifischen Zeiten anzurufen.
  • Nachrichtengesteuerte Bohnen akzeptieren Nachrichten von Quellen außer JMS.
  • Nachrichtenbestimmungsörter (dieselbe Idee wie EJB Verweisungen, Quellenverweisungen, usw.) sind hinzugefügt worden.
  • EJB fragen Sprache (EJB-QL) Hinzufügungen: ORDNUNG DURCH, AVG, MINUTE, MAX, SUMME, GRAF, und MOD.
  • XML Diagramm wird verwendet, um Aufstellungsdeskriptoren anzugeben, ersetzt DTDs

EJB 2.0, endgültige Ausgabe (2001-08-22)

JSR 19 - Hauptänderungen:

Gesamte Absichten:

  • Die Standardteilarchitektur, um zu bauen, hat objektorientierte kommerzielle Anwendungen in Java verteilt.
  • Machen Sie es möglich, verteilte Anwendungen zu bauen, indem Sie entwickelte Bestandteile mit Werkzeugen von verschiedenen Verkäufern verbinden.
  • Machen Sie es leicht, (unternehmens)-Anwendungen zu schreiben: Anwendungsentwickler werden auf niedriger Stufe Transaktion nicht verstehen und Verwaltungsdetails, Nebenläufigkeit, das Verbindungsvereinigen und anderen komplizierten auf niedriger Stufe APIs festsetzen müssen.
  • Wird folgen "Schreiben Einmal, Lauf Überall" Philosophie Javas. Eine Unternehmensbohne kann einmal entwickelt, und dann auf vielfachen Plattformen ohne Wiederkompilation oder Quellcodemodifizierung aufmarschiert werden.
  • Richten Sie die Entwicklung, Aufstellung und Laufzeitaspekte eines Lebenszyklus einer Unternehmensanwendung.
  • Definieren Sie die Verträge, die Werkzeugen von vielfachen Verkäufern ermöglichen, Bestandteile zu entwickeln und einzusetzen, die an der Durchlaufzeit zwischenfunktionieren können.
Seien Sie
  • mit vorhandenen Server-Plattformen vereinbar. Verkäufer werden im Stande sein, ihre vorhandenen Produkte zu erweitern, um EJBs zu unterstützen.
Seien Sie
  • mit anderem Java APIs vereinbar.
  • Stellen Sie Zwischenfunktionsfähigkeit zwischen Unternehmensbohnen und Java EE Bestandteile sowie nichtjavanische Programmiersprache-Anwendungen zur Verfügung.
Seien Sie
  • mit den CORBA Protokollen (RMI-IIOP) vereinbar.

EJB 1.1, endgültige Ausgabe (1999-12-17)

Hauptänderungen:

  • XML Aufstellungsdeskriptoren
  • Verzug JNDI Zusammenhänge
  • RMI über IIOP
  • Sicherheit - Rolle gesteuert, nicht Methode gesteuerter
  • Entitätsbohnenunterstützung - obligatorisch, nicht fakultativer

Absichten für die Ausgabe 1.1:

  • Stellen Sie bessere Unterstützung für den Anwendungszusammenbau und die Aufstellung zur Verfügung.
  • Geben Sie im größeren Detail die Verantwortungen der individuellen EJB Rollen an.

EJB 1.0 (1998-03-24)

Bekannt gegeben an JavaOne 1998, das Drittel der Sonne javanische Entwickler-Konferenz (vom 24. bis zum 27. März)

Absichten für die Ausgabe 1.0:

  • Definiert die EJB verschiedenen "Rollen", die durch die Teilarchitektur angenommen werden.
  • Definiert die Kundenansicht von Unternehmensbohnen.
  • Definiert die Unternehmensbohnenentwickler-Ansicht.
  • Definiert die Verantwortungen eines EJB Behälterversorgers und Server-Versorgers; zusammen setzen diese ein System zusammen, das die Aufstellung und Ausführung von Unternehmensbohnen unterstützt.

Außenverbindungen


Gemeinschaftsuniversitätsbezirk von Los Angeles / J. Michael Straczynski
Impressum & Datenschutz