390 likes | 525 Views
Enterprise Java Beans (EJB). Projekt Verteilte Informationssysteme Freitag, 3.11.2000. Gerald Weber. Überblick. Middleware, Zweck und Funktion -> Bedarf für EJB Applikationsserver: EJB für Skalierbarkeit EJB als Komponenten. Middleware.
E N D
Enterprise Java Beans (EJB) Projekt Verteilte Informationssysteme Freitag, 3.11.2000 Gerald Weber
Überblick • Middleware, Zweck und Funktion-> Bedarf für EJB • Applikationsserver: EJB für Skalierbarkeit • EJB als Komponenten Gerald Weber - EJB
Middleware • Zweck: Unterstützung von Verteiter Applikationsprogrammierung. • Bietet Infrastruktur, die von Low-Level Aufgaben abstrahiert. • Middleware-Ansätze:- Remote Procedure Call (RPC)- Message Oriented Middleware (MOM)- Object Oriented Middleware: CORBA, DCOM, RMI Gerald Weber - EJB
RPC und CORBA: Motivation • Motivation aus Sicht der Verteilungsproblematik:Kommunikation zwischen Verteilten Prozessen soll durch den Austausch strukturierter Daten erfolgen. • Motivation aus Sicht der Programmierparadigmen:Verteilungstransparenz!Ein verteilter Aufruf soll wie ein lokaler Aufruf wirken. • Realisierung über Proxies Gerald Weber - EJB
Proxies, Stubs, Skeletons Server Client Stub Naming-S. Lokales Objekt Skeleton STUB calls SKELETON Gerald Weber - EJB
Realisierung des Aufrufs Möglichkeiten der Parameterübergabe: • Call by reference: Bei verteilt zugreifbaren Referenzen. • Call by Value: Bei Daten. • Strukturierte Daten werden durch Middleware als Datenstrom versandt . Gerald Weber - EJB
Verteiltes OO-Modell vs. lokales OO-Modell • Das Verteilte Modell kann auf verschiedene Zielsprachen abgebildet werden (CORBA) • Ein verteiltes Objekt soll länger leben als einzelne Prozesse (insbesondere bei Persistenz) • Die Infrastruktur erfordert weitere, technische Methoden neben den Business-Methoden. • Naives Mapping (z.B. RMI): Ein lokales Objekt entspricht einem verteilten Objekt -> Skalierbarkeitsproblem. Gerald Weber - EJB
Einfache Serverarchitektur • Ein Serverprozess nimmt alle Requests an einem Rechner entgegen. • Jedem Request ordnet er nach einer Namenskonvention ein ausführbares Programm zu. • Das Programm wird als Prozess gestartet. • Es erhält die Parameter als Standardinput. • Der Standardoutput ist der Rückgabewert. • Hohe Verfügbarkeit, keine Alterung. • begrenzt skalierbar. Gerald Weber - EJB
Überblick • Middleware, Zweck und Funktion-> Bedarf für EJB • Applikationsserver: EJB für Skalierbarkeit • EJB als Komponenten Gerald Weber - EJB
Applikationsserver: EJB für Skalierbarkeit • Verteilte OO-Systeme benötigen Server. • Skalierbarkeitsproblem: Es sind oft mehr verteilte Objekte referenziert als im Server lokal gehalten werden können. • Performanceproblem: Die Ressourcen, die zur Bearbeitung eines Requests erforderlich sind, sind- begrenzt- teuer beim Aufbau. • Lösung: Objektpools. Gerald Weber - EJB
EJB als Standard für Objektpools • Mismatch zwischen lokalen und verteilten Objekten:EJB definiert einen „Standard-Mismatch“ • Server-Implementierung hängt von Objekt-Charakter ab. Oberklassen: • Entity = persistenter Zustand • Transaction = kapselt Prozedur • Session = Clientbezogener Kontext • Message Client = Asynchroner Service Gerald Weber - EJB
EJB Objektpool • EJB-Objektpool ist ein Pool von Java-Objekten (Terminus: Servants, leider in EJB nicht verwandt), der vom Server vorgehalten wird. • Servants können in ihrem Leben verschiedene verteilte Objekte repräsentieren. Entscheidende Zustände: • gebunden (sie repräsentieren ein verteiltes Objekt) • gepoolt (sie sind bereit, gebunden zu werden) Gerald Weber - EJB
Auslagerung • EJB verwendet nicht die Virtual-Memory Funktion des Betriebssystems. • Alle Servants sind im Hauptspeicher. • Wenn zu viele verteilte Objekte referenziert sind, müssen Servants ihre Bindung abgeben und ihr Zustand muss ausgelagert werden: passivate/activate Gerald Weber - EJB
Life-Cycle-management • Der Lebenszyklus verteilter Objekte wird bei EJB auf standardisierte Weise gemanaged. • In einer EJB-Welt gibt es Kollektionen von Objekten. (EJ Beans?) • Jede Kollektion von Objekten besitzt • zum Life-Cycle-Management ein Home-Interface • ein Remote-Interface, mit den Business-Methoden (Instanzmethoden). • Nur ein Pool für beide Interfaces Gerald Weber - EJB
EJB Pool Container Client Home Pool Home Servant Remote Client Gerald Weber - EJB
Überblick • Middleware, Zweck und Funktion-> Bedarf für EJB • Applikationsserver: EJB für Skalierbarkeit • EJB als Komponenten Gerald Weber - EJB
EJB als Komponenten • Zweck, Nutzung, Funktion der Beans • Standard auf Java-Sprachebene [EJBSpec 2.0] • Allgemein • Session Beans • Entity Beans • Transaktionen • Sicherheit, Zugriff, Benutzeridentifikation • Kritik Gerald Weber - EJB
Ziele der EJB Architektur • Standard-Applikationsserver-Architektur für Java • Abstraktion von Low-Level Aufgaben bei Transaktionen, Multithreading, Connection Pooling • Komponenten-Orientierung: Applikationen können aus Teilen verschiedener Hersteller aufgebaut werden • Definierte Rollenverteilung für die Systemerstellung,Definition der Aufgaben der Rollen durch Contracts Gerald Weber - EJB
EJB Architektur EJB-Server RDBMS RMI JDBC B Clients Container B CORBA Legacy- Application Gerald Weber - EJB
Beispiel: E-Commerce-System • Bean-Provider Cat.com bietet Produktkatalog MyCat an • App. Assembler WebVend erstellt Applikation BuyMe • Marktplatz GoodStuff ist Deployer, EJBServer und Container kommen von MegaBeans MyCat .jar MyCat JSP DD Cart .jar Order Client EJBServ.+Cont. M. Client HTTP Client C. O. Gerald Weber - EJB
EJB Rollen • Bean Provider (Experte im Anwendungsbereich) • Application Assembler: (Experte im Anwendungsbereich) • Deployer (Experte für spezielle Systemumgebung) • EJB Server Experte (TP-Experte, z.B. DB-Anbieter) • EJB Container Provider (Experte für System-programmierung, Load Balancing) • System-Administrator Gerald Weber - EJB
Komponentenbegriff • Beans implementieren Business-Logik. • Beans sind verteilte Objekte. • Bean ist über eine Anzahl von Parametern anpaßbar. • Beans enthalten deklarative Information (Deployment-Descriptor). • Client-Zugriff erfolgt durch festgelegte Interfacegruppe. Gerald Weber - EJB
Welche Klassen stellen EJB dar? • EJB repräsentieren grobkörnige Business-Objekte: • Sitzungsobjekte: Session Beans • Persistente Objekte: Entity Beans • Beispiel: Eine Bean für Rechnung, aber nicht für Rechnungsposten • Keine aktiven Objekte • Beans haben ein Analyse-Interface Gerald Weber - EJB
Home Interface: Feste Arten von Klassen-Methoden. U.a. Life-cycle-Management Methoden Remote Interface: Instanzmethoden, Business-Methoden Beanklasse: Implementiert beide Interfaces Deployment Descriptor Verwendete andere Klassen (Helper Classes) Java-Sprachebene: Elemente einer EJBean Home Remote Bean Helper Helper Gerald Weber - EJB
Home-Interface MyCatHome: create(String Name) findByPrimaryKey(String) findLike(String keyword) ssv(integer percent) Remote-Interface MyCat: getPrice() etc. setPrice() etc. buy(int pieces) Bean-Klasse MyCatBean: Implementiert Methoden aus MyCatHome und MyCat. Deployment Descriptor: type: entity role admin: Alle Methoden role customer: nicht setPrice(). Beispiel: Die EntityBean MyCat Gerald Weber - EJB
EJB Contracts: Client-View-Contract • Client kann durch RMI oder CORBA auf Bean zugreifen. • Pro Deployment einer Bean ist ein Home-Interface-Objekt in JNDI eingetragen und für den Client nutzbar. • Bean Instanzen implementieren das Remote-interface Der Client erhält sie durch das Home-Interface. • Der Client kann ein sog. Handle erhalten. Dieses identifiziert Bean-Instanzen oder -Homes über JVM-Grenzen hinweg. • Dyn. Bean-Nutzung mit MetaData-Interface. Gerald Weber - EJB
Component Contract (Erklärt Container) • Bean implementiert Business-M., Life-cycle-M. u.a. Callbacks. Container ruft diese sinngemäß auf. • Container behandelt Trans., Security and Exceptions. • Container bietet JNDI-Environment, EJBContext. • Bean Provider vermeidet Programmierung, die das Container Runtime Management stört. • Optional: Container behandelt Persistenz. • Deployment-Descriptor enthält entsprechende Daten. Gerald Weber - EJB
Einschränkungen für EJB • Dürfen keine Nebenläufigkeitsmechanismen (Threads, synchronised-Statement) nutzen. • Dürfen keine r/w statischen Variablen nutzen. • Dürfen nur die explizit erlaubten Dienste nutzen. • Dürfen nicht selbst Transaktionsgrenzen setzen. Gerald Weber - EJB
SessionBeans • Enthalten Interaktionszustand (conversational state) • Lebensdauer wird vom Client kontrolliert. • Kann auf Platte ausgelagert werden (passivation) mittels Serialization. • Kann nur von einem Client angesprochen werden. • Kann gespeichert werden als Handle. Gerald Weber - EJB
Transaktionen: ACID - Eigenschaften • Atomicity: Jede Transaktion wird ganz oder gar nicht ausgeführt (= Sicht der anderen Nutzer). • Consistency: Transaktionen hinterlassen die Datenbank in einem konsistenten Zustand. • Isolation: Transaktionen erscheinen, als wenn sie hintereinander (sequentiell) ausgeführt würden. • Durability: Wenn eine Transaktion erfolgreich beendet ist, sind ihre Änderungen an Daten persistent. Gerald Weber - EJB
ACID - Eigenschaften von Transaktionen werden genutzt. Innerhalb einer Transaktion kann mit genau einer Kopie gearbeitet werden. Diese muß vor einem Commit gespeichert werden. Eine Kopie je Transaktion. Grundidee der Persistenz bei EJB DBMS Beans Gerald Weber - EJB
Bean Managed Datenzugriff muß programmiert werden Routinen:find, load, store, remove, create Container Managed Datenzugriff wird vom Container beim Deployment erzeugt Automatisches Mapping auf die Datenbank. Persistenz: Alternativen bei EJB Business-Methoden werden in gleicher Weise implementiert Gerald Weber - EJB
CMP am Beispiel • Einträge im Deployment Descriptor • Persistente Felder: price, stock, description, vendor • Informelle Beschreibung der FinderMethoden:findLike: „Findet alle Produkte mit ähnlichem Namen“ • setPrice(int newprice) { price = newprice} Gerald Weber - EJB
Bean Managed Persistence am Beispiel • ejbCreate(...): "insert into CatTable Values (...)" • ejbfindLike(keyword): "select ... where ID = $name"; • ejbLoad(): "select ... where ID = $name"; price = resultset.get(" price ") ... • ejbStore(): if (dirty) "update ... where ID = $name" ; • ejbRemove(): "delete ... where ID = $name" Gerald Weber - EJB
CMP in EJB Version 2.0 • Wird vom Persistence-Manager gelöst. • UML-artige Modelle können verarbeitet werden. • Finder-Methoden werden mit EJBQL beschrieben:SQL, aber Ergebnis ist immer Primärschlüsselliste. • Business-Methoden können weitergehende select-Anfragen stellen. Gerald Weber - EJB
Verteilte Transaktionen RecoverableServer T.Object TransactionalClient Client R.S. T.Object beginT, commit abort Context Tr.-Service 2PC Gerald Weber - EJB
Transaction Demarcation • SessionBeans: Container-/Bean-managed • EntityBeans: Nur Container-managed • Container Managed: • Transaktions-attribut im DD per Methode:Required, Supports, notSupp., Req.New, Mand., Never • Bei Client-Call ohne Transaktionskontext:Business-methode wird mit Transaktion gekapselt • Für Abbruch setRollbackOnly(), auch bei ExceptionsSes.B.: Updates bleiben, Ent.B.: Updates verloren Gerald Weber - EJB
Security • App.Ass. definiert Sicherheits-Rollen (security roles), diesen gibt er (das) Zugriffsrecht per Methode • Deployer weist Benutzern (Principals) S.-Rollen zu, ebenso weist er Beans Rollen zu (auch zu RM) • Container ermöglicht dieses Sicherheitsprotokoll • Bean-managed Security (zusätzlich):EJBContext.getCallerPrincipal()EJBContext.isCallerInRole(String role) //z.B. Limits Gerald Weber - EJB
Kritik • Ständig sich ändernder Standard (?) • Performanz ist unklar. • Unklarkeiten bei der gesamten Architektur. • Unklarheiten in der Spezifikation Gültigkeit Handle, Bean-To-Bean Roles Gerald Weber - EJB