Application Frameworks and Componentware Wintersemester 2002/03 Enterprise Java Beans „Die hohe Kunst der aromatischen Bohnenmischung” oder „Replikator: Einmal Kaffee, Brasilia Highland Blend, Heiß” Motivation © 2000, Peter Sturm, Trier Datenbank • Bean = Komponente • Zielgruppe – Kommerzielle Anwendungen – E-Commerce • Evolution früherer – Client/Server-Systeme – Transaktionsmonitore • 3-Tier-Applikationen – Client – Bussiness Application – Database Business Logic Clients (c) Peter Sturm, Universität Trier 1 Application Frameworks and Componentware Wintersemester 2002/03 Business Objects Datenbank Komponenten-basierte Anwendung • Varianten – Eigenständige Komponenten – Wrapper für Legacy Software – Client-Transaktionen • Laufzeitumgebung – EJB Server – vergleichbar MTS bei COM+ © 2000, Peter Sturm, Trier • Business Objects Business Logic Clients Aufbau des EJB-Server • © 2000, Peter Sturm, Trier • • Laufzeitumgebung – Namensverwaltung – Anbindung an DB – Nachrichtenkommunikation EJB Object = Bean Wrapper – Indirektionsstufe – Zugriff über Reflection Beantypen – Entity Bean • Zustand, Persistent – Session Bean • Transient • Stateless, Stateful (c) Peter Sturm, Universität Trier Bean Bean Bean X Bean EJB Object Bean EJB Object EJB Server 2 Application Frameworks and Componentware Wintersemester 2002/03 Aufgaben des Servers © 2000, Peter Sturm, Trier • Resource Management – Instance Pooling: Beans vorinstanziiert – Instance Swapping: Wechsel der EJB-Object-Bindung – Activation: Stilllegen und Reaktivieren von Beans • Primary Services – Concurrency: Single-Threaded Bean-Implementierung – Transactions: ACID-Prinzip – Persistence: Container-Managed, Bean-Managed – Distribution: RMI over JRMP oder RMI-IIOP – Naming: JNDI unterstützt LDAP, NIS+, DNS, ... – Security: Methodenbasierte Zugriffskontrolle Enterprise Java Beans Entity Bean (c) Peter Sturm, Universität Trier 3 Application Frameworks and Componentware Wintersemester 2002/03 Bean-Struktur • Remote Interface – Die eigentlichen Zugriffsfunktionen der Bean • Setters und Getters :-) – public interface X extends javax.ejb.EJBObject { ... }; • Home Interface – Bean-Erzeugung: public X create ( ... ) – Beans wiederfinden: public X findByPrimaryKey © 2000, Peter Sturm, Trier ( key ) – public interface XHome extends java.ejb.EJBHome { ... }; • Primary Key – Speichern und Auffinden der Bean in Datenbank – public class XPK implements java.io.Serializable { ... }; • Bean Class – public class XBean implements javax.ejb.EntityBean { ... }; EntityBean: Funktionen • ejbActivate – EJBObject-Bean-Bindung wiederhergestellt • ejbPassivate – EJBObject-Bean-Bindung wird abgebaut © 2000, Peter Sturm, Trier • ejbLoad – Bean wurde geladen • ejbStore – Bean wird gespeichert • ejbRemove • setEntityContext unsetEntityContext – Informationen über EJBObject, Client, PK (c) Peter Sturm, Universität Trier 4 Application Frameworks and Componentware Wintersemester 2002/03 Exkurs: Reflection • Bean-Klasse implementiert weder Remote- noch Home-Interface – keine direkte Bindung zum Client vorhanden • Bean-Klasse muß aber Methoden mit identischer Signatur enthalten © 2000, Peter Sturm, Trier • EJB-Object greift über ReflectionMechanismus darauf zu – vgl. JavaBeans • Beispiel „ShowClass“ aus – Java in a Nutshell D. Flanagan O’Reilly, 2. Auflage © 2000, Peter Sturm, Trier Deployment Descriptor • XML-Dokument (EJB Version 1.1) – Bean-Beschreibung • Namen der Interfaces • Klassenname • Persistenztyp (Container oder Bean) • Welche Bean-Attribute werden persistent gespeichert – Zugriffsrollen von Clients beim Bean-Zugriff – Zugriffskontrolle auf Methoden • Welche Rollen dürfen zugreifen – Transaktionen • Bean = jar-File bestehend aus XML-DD und *.class Dateien (c) Peter Sturm, Universität Trier 5 Application Frameworks and Componentware Wintersemester 2002/03 © 2000, Peter Sturm, Trier Entity Beans: Zustandsdiagramm Container-Managed Persistence • Erzeugen © 2000, Peter Sturm, Trier • Löschen (c) Peter Sturm, Universität Trier 6 Application Frameworks and Componentware Wintersemester 2002/03 • Activation © 2000, Peter Sturm, Trier • Synchronization Bean-Managed Persistence • Erzeugen © 2000, Peter Sturm, Trier • Löschen (c) Peter Sturm, Universität Trier 7 Application Frameworks and Componentware Wintersemester 2002/03 • Activation © 2000, Peter Sturm, Trier • Synchronization Enterprise Java Beans Session Bean (c) Peter Sturm, Universität Trier 8 Application Frameworks and Componentware Wintersemester 2002/03 Session Beans • Session Beans besitzen keinen persistent gespeicherten Zustand • Zwei Varianten © 2000, Peter Sturm, Trier • Stateless Session Bean – Kein sichtbarer Zustand zwischen Methodenaufrufen – Pooling und Swapping möglich • Stateful Session Bean – Feste Bindung zu einem Client – Conversational State zwischen Methodenaufrufen – Swapping nicht möglich Bestandteile • Remote Interface – Eigentlichen Interaktionsfunktionen © 2000, Peter Sturm, Trier • Home Interface – Nur Erzeugung – Kein Auffinden über Primary Keys • Bean-Klasse – Erweitert SessionBean • Deployment Descriptor – XML-Dokument • u.a. Lokalisierungsinformation benötigter Beans • Zugriffskontrolle (c) Peter Sturm, Universität Trier 9 Application Frameworks and Componentware Wintersemester 2002/03 © 2000, Peter Sturm, Trier Session Bean: Stateless © 2000, Peter Sturm, Trier Stateless: create() und remove() (c) Peter Sturm, Universität Trier 10 Application Frameworks and Componentware Wintersemester 2002/03 © 2000, Peter Sturm, Trier Session Bean: Stateful © 2000, Peter Sturm, Trier Session Bean: Stateful with Transactions (c) Peter Sturm, Universität Trier 11 Application Frameworks and Componentware Wintersemester 2002/03 © 2000, Peter Sturm, Trier Stateful: create() und remove() © 2000, Peter Sturm, Trier Stateful: Activation (c) Peter Sturm, Universität Trier 12 Application Frameworks and Componentware Wintersemester 2002/03 © 2000, Peter Sturm, Trier Stateful: Transaction Notification Literatur • Richard Monson-Haefel Enterprise Java Beans © 2000, Peter Sturm, Trier O’Reilly, 2. Auflage, 2000 – Quelle der gezeigten Zustands- und Interaktionsdiagramme (c) Peter Sturm, Universität Trier 13